Spring如何加载properties文件解析

在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到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=true
jdbc.user=root

jdbc.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方法。


猜你喜欢

转载自blog.csdn.net/m0_37044606/article/details/79152656