spring之一读取配置文件属性

来源:互联网 发布:Excel图表突出数据 编辑:程序博客网 时间:2024/06/05 09:07

前言

在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成比如jdbc连接信息,邮件服务器信息,接口地址及版本信息等等。但读取*.properties文件有N多种方式,本文根据我工作中用到的读取properties配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法。

设置配置文件

例如jdbc连接信息:

mariadb.config.url=jdbc:mariadb://192.168.216.129:3306/config?useUnicode=true?characterEncoding=utf-8mariadb.config.username=rootmariadb.config.password=root@mariadbmariadb.config.driverClass=org.mariadb.jdbc.Drivermariadb.config.env=devmariadb.config.override=truemariadb.config.appId=spring_config

spring启动加载配置文件

配置文件位置 src\main\resources\properties\config.properties

方式一

加载方式

<!--读取配置文件:方法一 --><!--    <context:property-placeholder    location="属性文件,多个之间逗号分隔"    file-encoding="文件编码"    ignore-resource-not-found="是否忽略找不到的属性文件"    ignore-unresolvable="是否忽略解析不到的属性,如果不忽略,找不到将抛出异常"    properties-ref="本地Properties配置"    local-override="是否本地覆盖模式,即如果true,那么properties-ref的属性将覆盖location加载的属性,否则相反"    system-properties-mode="系统属性模式,默认ENVIRONMENT(表示先找ENVIRONMENT,再找properties-ref/location的),NEVER:表示永远不用ENVIRONMENT的,OVERRIDE类似于ENVIRONMENT"    order="顺序"    />--><context:property-placeholder location="classpath:/properties/jdbc.properties" file-encoding="utf-8" ignore-unresolvable="true"/>

应用方式

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">    <property name="driverClass" value="${driver}"/>    <property name="jdbcUrl" value="${url}"/>    <property name="user" value="${username}"/>    <property name="password" value="${password}"/>    <!-- c3p0 私有配置 -->    <property name="maxPoolSize" value="30"/>    <property name="minPoolSize" value="10"/>    <!-- 关闭连接不自动提交 -->    <property name="autoCommitOnClose" value="false"/>    <!--获取连接超时时间-->    <property name="checkoutTimeout" value="1000"/>    <!--当获取连接失败,重试次数-->    <property name="acquireIncrement" value="2"/></bean>

代码应用方式

@Componentpublic class ConfigBean2 {    @Value("${my.email}")    private String email;    @Value("${my.qq}")    private Integer qq ;    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public Integer getQq() {        return qq;    }    public void setQq(Integer qq) {        this.qq = qq;    }    @PostConstruct    public void init(){        System.out.println("ConfigBean2======================"+email+qq) ;    }}

方式二

配置方式

<!--java中获取配置文件属性  配套使用 ConfigBean.java--><bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean">    <property name="locations">        <array>            <value>classpath:/properties/config.properties</value>        </array>    </property></bean>

使用方式

@Componentpublic class ConfigBean {    @Value("#{config.name}")    private String name ;    @Value("#{config.age}")    private Integer age ;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    @PostConstruct    public void init(){        System.out.println("ConfigBean======================"+name+age) ;    }}

代码应用

@Autowiredprivate ConfigBean configBean ;

方式三

只提供一种思路。

随着项目越来越大,有些配置项越来越多,管理起来很不方便,这时候将配置文件放置再数据库就是一种很好的解决办法。当服务启动时去数据库读取加载在内存中,供服务运行期间使用。而项目只放数据库连接信息。

实现大致思路。

配置文件配置数据库信息

mariadb.config.url=jdbc:mariadb://192.168.216.129:3306/config?useUnicode=true?characterEncoding=utf-8mariadb.config.username=rootmariadb.config.password=root@mariadbmariadb.config.driverClass=org.mariadb.jdbc.Drivermariadb.config.env=devmariadb.config.override=truemariadb.config.appId=spring_config
  1. #### spring配置文件配置如下
<bean id="propertyConfigurer" class="com.hsy.java.util.jdbc.PropertyConfig">    <property name="locations">        <list>            <value>classpath*:/properties/config.properties</value>        </list>    </property>    <!-- 是否加载插件。当为false或者没有配置configList都视为不加载插件读取配置-->    <property name="loadPlugin" value="true" />    <property name="configList">        <list>            <ref bean="jdbcConfigHelper"/>        </list>    </property>    <property name="ignoreUnresolvablePlaceholders" value="true" />    <property name="ignoreResourceNotFound" value="true"/>    <property name="fileEncoding" value="utf-8"/></bean><bean id="jdbcConfigHelper" class="com.hsy.java.util.jdbc.JdbcConfigHelper">    <!-- 排除的key,这些key自己加载 -->    <property name="excludeKeys">        <set>            <value>name</value>            <value>age</value>        </set>    </property></bean>

代码实现暂不赘述

有需要代码的可以去我的github上去clone
github源码地址

阅读全文
0 0
原创粉丝点击