spring读取prperties配置文件(1)

博客地址http://www.cnblogs.com/shizhongtao/p/3438431.html

属性文件命名是*.properties,在java中,用类java.util.Properties来处理,例如我创建文件my.properties,然后加入属性

filename=你好
path=D:\app

那么在java中就可以这样读取属性

InputStream in=App.class.getResourceAsStream ("/my.properties");
        Properties pro=new Properties();
        try
        {
            pro.load(in);
            System.out.println(pro.getProperty("filename"));
        } catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(in!=null){
                try
                {
                    in.close();
                } catch (IOException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

上面代码中只是读取了,其中的filename属性,不过会出现一个问题,就是中文乱码的问题,这是因为inputstream是按照字节流读取,每次读一个字节,而每个汉字是两个字节;所以会出现乱码,我们可以这样修改,(当然你也可以用fileReader这个类,因为FileREder用的是系统默认字符编码,只要你默认编码支持中文就可以了。)

new InputStreamReader(in,"utf-8");
pro.load(new InputStreamReader(in,"utf-8"));
System.out.println(pro.getProperty("filename"));

在spring中,利用配置文件读取相应的配置,方便项目一些变量的修改,例如数据库配置、文件保存位置、类中不固定的一些变量值等等。

通常我们会建一个名字为db.propreties的属性文件。里面内容如下:

db.connection.driver_class=oracle.jdbc.driver.OracleDriver
db.connection.url=jdbc:oracle:thin:@localhost:1521:orcl
db.connection.username=test
db.connection.password=test

然后在spring中用PropertyPlaceholderConfigurer类来读取属性,这个类读取属性文件非常灵活,你可以配置编码 <property name="fileEncoding">来配置编码。具体使用可以参看官方的文档http://docs.spring.io/spring/docs/3.2.5.RELEASE/spring-framework-reference/htmlsingle/#beans-factory-placeholderconfigurer

1 <bean id="propertyConfigurer"        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
2     <property name="locations">
3         <list>
4             <value>classpath:/db.properties</value>
5         </list>
6     </property>
7 </bean>

在spring2.5以后的版本中,读取属性文件也可以这样配置,与上面的效果一样。

<context:property-placeholder location="classpath:db.properties"/>

这样在我们配置数据库的dataSource时候就可以如下配置:

      class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName">
            <value>${db.connection.driver_class}</value>
        </property>
        <property name="url">
            <value>${db.connection.url}</value>
        </property>
        <property name="username">
            <value>${db.connection.username}</value>
        </property>
        <property name="password">
            <value>${db.connection.password}</value>
        </property>
    </bean>

引申:如果想要PropertyPlaceholderConfigurer用anotation的方式,去注入属性,我们该如何写呢?

spring读取prperties配置文件(2)

原文地址:https://www.cnblogs.com/shizhongtao/p/3438431.html