在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修改源代码,这样更加方便。在Spring中也可以这么做,而且Spring有两种加载properties文件的方式:基于xml方式和基于注解方式。下面分别讨论下这两种方式。
1. 通过xml方式加载properties文件
在spring-config.xml核心文件中添加如下,有的也叫applicationContext.xml。
<!-- 数据源配置 -->
<context:property-placeholder location="classpath:jdbc.properties,classpath:redis.properties" />
我这里有两个配置文件jdbc.properties和redis.properties两个文件,
jdbc.properties内容如下:
#jdbc.driverName=com.mysql.jdbc.Driver
jdbc.driverName=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
jdbc.dbType=mysql
jdbc.url=jdbc:mysql://192.168.8.60:3306/user?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=truejdbc.user=rootjdbc.pwd=123456
jdbc.testSql=SELECT 'x' FROM DUAL这里只说明jdbc.properties的配置方式
<!-- 数据源配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.pwd}" />
<property name="initialSize" value="0" />
<property name="maxActive" value="20" />
<property name="minIdle" value="2" />
<property name="maxWait" value="30000" />
<property name="validationQuery" value="${jdbc.testSql}" />
</bean>2. 通过注解方式加载properties文件(在代码中推荐第二种)
还有一种就是通过注解的方式,在java代码中使用@Value注解来加载配置文件中的值。
我们来看一个例子:假如我们要在程序中获取某个文件的绝对路径,我们很自然会想到不能在程序中写死,那么我们也可以写在properties文件中。还是在resources目录下新建一个public.properties文件,假设里面写了多条记录:
#solr服务器访问路径(以后很有可能有多可solrcore)
SOLR_URL=http://localhost:8888/solr/solr_core/
#增量更新参数dataimport固定不变 command=delta-import表示增量从mysql更新数据到solr command=full-import表示全量从mysql更新数据到solr
#entity=document表示要更新的entity的name,但是注意此名称非java中实体类的名称,而是solr_core中data-config.xml中的name
#clean=false 表示增量不清空solr中数据 true表示清空数据 但是全量更新是true
#commit=true 提交必须是true
SOLR_PARAM=/dataimport?command=delta-import&entity=document&clean=false&commit=true
如果想在java代码中获取此路径,在spring-config.xml核心文件中添加如下: <!-- 使用注解的方式注入,主要用在java代码中使用注解注入properties文件中相应的value值 -->
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="ignoreResourceNotFound" value="true"/>
<property name="locations">
<list>
<value>classpath*:/comm.properties</value>
</list>
</property>
</bean>
现在在java代码中获取此路径(我的是在service实现类里面会有@Service,如果不是可以添加@Component
):
@Value("#{configProperties['SOLR_URL']}")
private String solr_url;
@Value("#{configProperties['SOLR_PARAM']}")
private String solr_param;
public String getSolr_url() {
return solr_url;
}
public void setSolr_url(String solr_url) {
this.solr_url = solr_url;
}
public String getSolr_param() {
return solr_param;
}
public void setSolr_param(String solr_param) {
this.solr_param = solr_param;
}
注意:一定要加上get/set方法。