平时项目中常用到properties文件作为配置项的管理,在spring中必然少不了这种配置,引用properties有几种不同的方法在此罗列出来:
方法一:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
p:location="classpath:config.properties"
p:fileEncoding="utf-8" />
这种方法最为普通,声明一个class为PropertyPlaceholderConfigurer的bean,从名字也能看出来,“属性占位配置类”,对其配置location与fileEncoding属性即可实现对properties文件的引用。这里的location属性用到了classpath前缀,表示从src路径下开始检索,而我得properties文件放在src根目录下故无需其他路径名,直接写文件名即可。
有关spring的url前缀介绍请移步:http://blog.csdn.net/gklifg/article/details/15336951
方法二:测试没通过,加上后启动项目没报错,进入第一遍项目中的index时就会报错说密码不对,具体原因还没找到。有成功的哥们可以分享下自己的经验。
<context:property-placeholder location="classpath:config.properties" file-encoding="utf8" />
<bean id="utf8" class="java.lang.String" >
<constructor-arg value="utf-8" />
</bean>
这个配置比较古怪,本来应该直接在第一行标签里写utf-8的可是书上说有bug,只能照这种写法来(这里utf8能不能引用到utf8的bean对象我表示很怀疑),问题是这种写法也不对,后来试了不加file-encoding的配置也包同样的错误。
配置好后就可以在配置文件中使用占位符了
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbcDriver}">
</property>
<property name="url" value="${url}"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
</bean>
不仅可以在applicationContext中使用占位符,也可以在注解中使用@value("${propName}")把配置中的字面值注入到类的属性中。
@value("${jdbcDriver}")
private String jdbcDriver;