您的位置:首页 > 编程语言 > Java开发

spring引入properties文件,并在controller等层获得引入文件中属性的值

2016-06-10 16:12 519 查看

引入配置文件方法一:

用context:property-placeholder引入配置文件

<!-- 配置由spring读取jdbc的属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties,classpath:aaaaa.properties"/>

然后${...}取即可

<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />


引入配置文件方法二:

用PropertyPlaceholderConfigurer,在spring的xml文件中配置。

2.1 使用场景一:

在配置数据库连接池的dataSource中引入jdbc.properties文件属性,很常用



配置数据库连接池时,在datasource获取配置文件的属性可以参考以下两篇文章,我就不详细写了,只简要贴一点代码。

http://www.cnblogs.com/wanggd/archive/2013/07/04/3172042.html

http://blog.csdn.net/lawmansoft/article/details/7434134

要在spring的xml中引用properties文件中定义的属性,需要进行特殊的加载,利用PropertyPlaceholderConfigurer

典型配置如下:用PropertyPlaceholderConfigurer,在spring的xml文件中配置。
<bean id="common.propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true" /><!--忽略未找到文件 -->
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="fileEncoding" value="UTF-8" />
<property name="locations">
<list>
<value>classpath*:conf/default-*.properties</value>
<value>classpath*:conf/*.properties</value>
</list>
</property>
</bean>

这个是调用的locations的list赋值方式,也可以单独一条
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:com/foo/jdbc.properties"/>
</bean>

properties中配置:
jdbc.driverClassName=org.hsqldb.jdbcDriver

下面的内容中,就可以通过
value="${jdbc.driverClassName}"
来访问properties的值

2.2  使用场景二:

在controller等层怎么使用配置文件中的属性。

例如:你在spring中引入了aaaaa.properties文件,aaaaa.properties文件中有一个属性a=http:8080。

当你想在controller定义一个变量的值为http:8080,如private String a="http:8080"可以这样写

@value("{a}")
private String a;

呵呵,是不是很高大上呢。。。。使用场景还是比较多的。

注:debug后如果发现a没有注入值,在springmvc或者struts2的xml配置文件中加入

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


(主要是父子容器的问题导致没有注入)

------------------------------------------2016-06-19更新-----------------------------------

 我博客所有文章目录:http://blog.csdn.net/wabiaozia?viewmode=contents
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: