spring管理属性配置文件properties——使用PropertiesFactoryBean

来源:互联网 发布:匈牙利命名法 数组 编辑:程序博客网 时间:2024/06/09 11:49
对于属性配置,一般采用的是键值对的形式,如:
key=value
属性配置文件一般使用的是XXX.properties,当然有时候为了避免eclipse把properties文件转码,放到服务器上认不出中文,可以采用XXX.conf的形式管理属性配置。
spring对于属性文件有自己的管理方式,通过spring的管理,可以直接使用@Value的方式直接得到属性值。
先使用org.springframework.beans.factory.config.PropertiesFactoryBean对属性配置文件进行管理。

1.新建一个java project,命名spring_test;

2.导入jar包:

aopalliance-1.0.jarcommons-logging-1.1.1.jarorg.springframework.test-3.1.0.RELEASE.jarspring-aop-3.1.1.RELEASE.jarspring-asm-3.1.1.RELEASE.jarspring-beans-3.1.1.RELEASE.jarspring-context-3.1.1.RELEASE.jarspring-context-support-3.1.1.RELEASE.jarspring-core-3.1.1.RELEASE.jarspring-expression-3.1.1.RELEASE.jar

3.在src下新建一个config.propertites:
author_name=lee

4.新建一个文件夹config;

5.新建一个app.conf:

project_info=项目
6.新建一个spring配置文件applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:annotation-config /><context:component-scan base-package="com.*"></context:component-scan><!-- 使用注解注入properties中的值 -->    <bean id="setting"        class="org.springframework.beans.factory.config.PropertiesFactoryBean">        <property name="locations">            <list>                <value>classpath:*.properties</value>                <value>file:config/*.conf</value>            </list>        </property>        <!-- 设置编码格式 -->        <property name="fileEncoding" value="UTF-8"></property>    </bean></beans>
7.新建一个获取属性配置文件属性的类ConfigProperty.java:
package com.lee.property.test;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;/** * config.properties文件映射类 *  * */@Component("configProperty")public class ConfigProperty {/** 作者名字 */@Value("#{setting[author_name]}")private String authorName;/** 项目信息 */@Value("#{setting[project_info]}")private String projectInfo;public String getAuthorName() {return authorName;}public void setAuthorName(String authorName) {this.authorName = authorName;}public String getProjectInfo() {return projectInfo;}public void setProjectInfo(String projectInfo) {this.projectInfo = projectInfo;}}
8.新建测试类:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:applicationContext.xml"})public class ConfigPropertyTest {     @Resource(name = "configProperty")    private ConfigProperty configProperty;         /**     * 测试Spring注解获取properties文件的值     */    @Test    public void test() {        System.out.println(configProperty.getAuthorName());        System.out.println(configProperty.getProjectInfo());    } }

总结:

1.使用org.springframework.beans.factory.config.PropertiesFactoryBean获取属性的方式是:

@Value("${beanid['properties_key']}")
2.使用
<!-- 设置编码格式 --><property name="fileEncoding" value="UTF-8"></property>
主要为了解决属性文件中value为中文时乱码的问题。

0 0
原创粉丝点击