why need resource files ?
1,对于操作系统而言:
CPU----执行代码和控制设备(运算器和控制器)
RAM----存放数据
CPU的控制器将资源文本加载到内存中,然后CPU的运算器进行运算,将结果输出到内存,
然后将结果输出到外设(显示器,硬盘等等)。
2,我们需要固化某些数据和通过配置文件的方式来动态的管理程序和注入数据。
例如:键值对形式的properties文件,其实就是按照规则属性的文本文件(对于文本文件我们
可以简单的修改来达到动态的修改程序)
下面就是通常对ConnectionPool的一个配置文件
jdbc.driverClassName=com.ibm.db2.jcc.DB2Driver jdbc_public.url=jdbc\:db2\://10.137.65.1\:50000/tkmap jdbc_public.username=tkmoa jdbc_public.password=taikang
这里与properties配置文件相关的的java类就是Properties类,它是一个特殊的HashMap,
因为它只是为将properties文件映射到内存中,所以,Properties是一个String,String的 HashTable,对于资源文件一般放在类中或者application文件夹中,
这两种不同的方式有不同用途:
第一:对于只读的配置文件一般放在类中,例如:spring,mybatis,hibernate中的配置文件
第二:对于用户可动态修改的一般放在工程下,例如:在web应用中一般根据应用的路径加上 服务器的路径组成绝对路径来进行读取配置文件,其实,这里也可以利用数据库中的 数据字典。
how apply resource files?
1,资源文件放置的位置:
a, 类路径下。
b,工程某个目录下。
c,国际化的资源文件的放置规则:
放在classpath的根目录下
命名格式:xxx_语言_国家.properties
例如:app_en_US.properties 表示美国英语
welcome.msg=hello world!
app_zh_CN.properties 表示中国汉语
welcome.msg=hello world!
资源文件的编码是使用UTF-8的编码,这样中文也必需是UTF-8的格式,
则需要将中文转换成UTF-8的,你可以使用propertiesEditor插件来进行输入中
ResourceBundle bundle = ResourceBundle.getBundle("app",Locale.CHINA); String welcome = bundle.getString("welcome.msg");
注:java.util.ResourceBundle是加载国际化资源文件的类。
利用此类的getBundle()方法加载classpath下的指定开头的文件名的国际化资源
文件。并且在加载时需要指定加载哪个国家的国际人资源文件。
此实例中的ResourceBundle.getBundle("app",Locale.CHINA);表示加载以"app"开 头的国际化资源文件,并且是中国的(对应的zh_CN)的。
一但国际化资源文件加载上来后,就可以使用ResourceBundle类的 getSring("welcome.msg")方法获取当前内容。
体会:
在编程的世界里就是代码和数据之间的融合,而对象通过属性和方法将其有机的结合到了一起。对一个对
像的使用:
1,准备数据----准备构造对象的数据,一般可以通过构造方法或者setter方法来进行数据的注入。
2,构造对象----这里可以利用工厂模式(Factory.getDefault()),建造者模式(Builder.build()),
new关键字,Class.newInstance()。
3,使用对象----这里应该说是使用对象的方法,因为对象有了数据的注入,那么便可以看成一个独立的 个体,然后传入数据得到相应的结果。那么,对象可以类比于一个微型的CPU:
第一:自身可以通过寄存器进行缓存数据,类似于对象中的属性。
第二:可以通过读取内存中的数据,进行处理后,将数据结果返回内存中,类似于对象的方法
其实,一个软件的架构都要回归到最终的执行对象,因为对象有容纳对象的能力,所以,将其功能进行
模块化,也就是进行对象的拆分,对于计算机中常用的操作在java中也是通过对象来展示,不同对象的
组合,便形成了一个强大的软件。对于,软件的认识就是用从大到小的认识,便是架构软件的能力,但是
你需要熟悉的是各个模块的功能,这样对于你的架构得心应手。