spring实战1 读取配置文件属性

前言

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

设置配置文件

例如jdbc连接信息:

mariadb.config.url=jdbc:mariadb://192.168.216.129:3306/config?useUnicode=true?characterEncoding=utf-8
mariadb.config.username=root
mariadb.config.password=root@mariadb
mariadb.config.driverClass=org.mariadb.jdbc.Driver
mariadb.config.env=dev
mariadb.config.override=true
mariadb.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>
代码应用方式
@Component
public 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>
使用方式
@Component
public 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) ;
    }
}
代码应用
@Autowired
private ConfigBean configBean ;

方式三

只提供一种思路。

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

实现大致思路。

配置文件配置数据库信息
mariadb.config.url=jdbc:mariadb://192.168.216.129:3306/config?useUnicode=true?characterEncoding=utf-8
mariadb.config.username=root
mariadb.config.password=root@mariadb
mariadb.config.driverClass=org.mariadb.jdbc.Driver
mariadb.config.env=dev
mariadb.config.override=true
mariadb.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源码地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值