• 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时完全一样了,不再赘述。

  • 相关阅读:
    辞职信(转贴)
    去掉控件上显示聚焦框
    静态构造函数
    用Excel 公式求 金额的差额
    2020/2/6学习总结
    2020/2/3学习总结
    2020/2/7学习总结
    2020/1/31学习总结
    2020/2/5学习总结
    2020/2/4学习总结
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/spring-boot-integrate-with-disconf-tutorial.html
Copyright © 2020-2023  润新知