今天在开发的时候在spring+Mybatis整合的过程中怎么都读取不了properties文件中的配置,查了下总结下来,望大家指正补充
要想把数据库的配置什么的那些很重要但是可能根据不同的环境要求对应不同的配置的配置数据,写死在代码里肯定是一个很愚蠢的决定,想一个很好的办法就是把对应的配置根据不同的环境配置成不同的配置文件,这样就在使用的时候不同的环境读取不同的配置配置文件就可以。但是在Spring MVC中想要使用${} 符进行配置文件的读取,需要进行先将配置进行加载,
一种方法就是使用属性占位符配置,PropertyPlaceholderConfigurer 这个类是继承自 BeanFactoryPostProcessor ,在BeanFactoryPostProcessor里面可以将配置中的属性进行统一的管理,在需要使用的时候直接使用占位符就可以。具体的使用方法:
第一步:在spring的配置文件里添加下面的配置,其中location是你的配置文件的地址<list>元素中可以有多个<value>元素:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:config.properties</value>
</list>
</property>
</bean>
第二步:在classpath下添加配置文件config.properties
第三步:在Spring的配置中使用$占位符取配置中的值:比如数据库的配置可以这样使用:
<property name="url" value="${databases_url}"/>
<property name="username" value="${databases_username}"/>
<property name="password" value="${databases_password}"/>
当然配置这么多的配置是不是有点麻烦,别着急Spring给我们提供了另一种方法加载配置,就是<context:property-placeholder/>元素具体的使用方式:
<context:property-placeholder location="classpath:config.properties"/>
细心的同学可以去看看这个元素的实现,在他的民命空间里,其实还是使用的PropertySourcesPlaceholderConfigurer这个类还是实现了BeanFactoryPostProcessor。
好了,有了配置文件的加载之后,就可以使用占位符啦。