spring-boot 速成(6) 整合disconf

spring-boot虽然不推荐使用xml文件做为配置文件,但是并没有把路堵死,所以与disconf的整合,仍旧可以沿用之前的xml方式来处理。

 

一、在Application类上用注解导入xml

复制代码
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ComponentScan(basePackages = {"com.example"})
@ImportResource({"classpath:spring-context.xml"})
public class WebApplication {

    public static void main(String[] args) {
        SpringApplication.run(WebApplication.class, args);
    }
}
复制代码

注意这行 @ImportResource({"classpath:spring-context.xml"}) ,这里导入了一个xml的配置入口文件,这个是关键!

spring-context.xml内容如下:

复制代码
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <import resource="classpath:spring-disconf.xml"/>
    <import resource="classpath:spring-bean.xml"/>

</beans>
复制代码

 

二、disconf配置文件spring-disconf.xml

复制代码
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <aop:aspectj-autoproxy proxy-target-class="true"/>

    <bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"
          destroy-method="destroy">
        <property name="scanPackage" value="com.example"/>
    </bean>
    <bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"
          init-method="init" destroy-method="destroy">
    </bean>

    <bean id="configproperties_disconf"
          class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
        <property name="locations">
            <list>
                <value>app.properties</value>
            </list>
        </property>
    </bean>

    <bean id="propertyConfigurer"
          class="com.baidu.disconf.client.addons.properties.ReloadingPropertyPlaceholderConfigurer">
        <property name="ignoreResourceNotFound" value="true"/>
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="propertiesArray">
            <list>
                <ref bean="configproperties_disconf"/>
            </list>
        </property>
    </bean>
</beans>
复制代码

跟以前不用spring-boot的时候,一毛一样。当然还要有一个disconf.properties文件,参考下图:

 

三、spring-bean.xml中使用disconf注入的属性

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="appConfig" class="com.example.config.AppConfig">
        <property name="checkSign" value="${checkSign}"/>
        <property name="sendEmailWhenStart" value="${sendEmailWhenStart}"/>
        <property name="env" value="${app.env}"/>
        <property name="sendEmailWhenError" value="${sendEmailWhenError}"/>
    </bean>

</beans>
复制代码

AppConfig是一个演示用的配置类

复制代码
package com.example.config;

import lombok.Data;

/**
 * Created by yangjunming on 2017/4/17.
 */
@Data
public class AppConfig {
    private String env;
    private boolean sendEmailWhenStart;
    private boolean sendEmailWhenError;
    private boolean checkSign;
}
复制代码

剩下的事情,就跟之前用spring+disconf时完全一样了,不再赘述。

posted @   菩提树下的杨过  阅读(8375)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
阅读排行:
· 几个技巧,教你去除文章的 AI 味!
· 系统高可用的 10 条军规
· 关于普通程序员该如何参与AI学习的三个建议以及自己的实践
· 对象命名为何需要避免'-er'和'-or'后缀
· AI与.NET技术实操系列(八):使用Catalyst进行自然语言处理
历史上的今天:
2015-05-21 hadoop:将WordCount打包成独立运行的jar包
2013-05-21 javascript:算法笔记
2011-05-21 Silverlight Telerik控件学习:数据录入、数据验证
2010-05-21 Flash/Flex学习笔记(52):使用TweenLite
2009-05-21 Enterprise Library 4.1学习笔记1----配置应用程序块(c/s和b/s均适用)
点击右上角即可分享
微信分享提示