springboot分环境导出自定义xml配置

     2022-03-28     607

关键词:

背景介绍:

      由于新的spring boot项目需要使用老的jar包,老的jar包的配置是用xml方式配置的,而且开发development、测试test、集成off、正式production环境都会有所不同,这种时候我们就需要让spring boot 分环境加载不同的xml配置文件。


方案简介:

      spring boot的 @ConditionalOnProperty注解可以让我们根据条件加载@Configuration配置;@ImportResource注解可以导入xml配置文件;application-环境.yml方式可以给不同的环境配置不同的属性值。结合这3个特性,我们可以实现分环境加载xml配置文件的目的。


具体实践步骤:

       (1)在application-development.yml中加入配置:importEnv: development

       (2)在application-test.yml中加入配置:importEnv: test

       (3)将要分环境加载的xml配置分为多个文件,每个文件中写各自环境相关的配置,例如:spring-development.xml,spring-test.xml

       (4)加入配置类

@Configuration
public class ResourceConfig {
    @Configuration
    @ConditionalOnProperty(name = "importEnv", havingValue = "development")
    @ImportResource(locations={"classpath:spring-development.xml"})
    class ResourceDevelopment{
        @Bean
        public Test test(){
        System.out.println("==================development=========================");
        return new Test();
        }
    }
    @Configuration
    @ConditionalOnProperty(name = "importEnv", havingValue = "test")
    @ImportResource(locations={"classpath:spring-test.xml"})
    class ResourceTest{
        @Bean
        public Test test(){
        System.out.println("==================test=========================");
        return new Test();
        }
    }
}

 

测试:

在application.yml配置中修改环境变量启动,可以看到不同的环境加载了不同的配置

#spring active env
spring:
    application:
        name: test1
    profiles:
        active: development

       



springboot自定义xml文件解析

...我们自定义的xml文件格式和xml文件解析处理器。新建一个Springboot工程,pom如下。SelfDefineXmlTrial/pom.xml:然后,新建一个用于测试controller。com.lfqy.springboot.selfdefxml.controller.SelfDefXmlController:最后,创建一个Springboot的启动类。com.lfqy... 查看详情

springboot2——指标监控actuator多环境切换profile和自定义starter(代码片段)

SpringBoot2——指标监控actuator、多环境切换Profile和自定义starter一、SpringBootActuator1.1SpringBootActuator的使用1.2Endpoints1.2.1端点暴露配置1.2.2重要端点解析二、多环境切换Profile2.1多配置文件2.2yaml的多文档块2.3配置文件的加载顺序三、自... 查看详情

springboot的自定义配置

参考技术ASpringBoot免除了项目中大部分的手动配置,对一些特定情况,我们可以通过修改全局配置文件以适应具体生产环境,可以说,几乎所有的配置都可以写在application.properties文件中,SpringBoot会自动加载全局配置文件,从而... 查看详情

如何自定义配置源交给springboot管理

概述我们知道,在Springboot中可以通过xml或者@ImportResource来引入自己的配置文件,但是这里有个限制,必须是本地,而且格式只能是properties(或者yaml)。那么,如果我们有远程配置,如何把他引入进来来呢。如果有兴趣可以看另外... 查看详情

springboot自定义tomcat添加黑白名单

...设置allow即可黑名单设置deny即可deny的优先级比allow要高。SpringBoot内嵌的tomcat是一个应用一个context,无法在xml文件里配置。如果想启用黑白名单,就需要自定义tomcat,设置context获得容器后可以直接设置context,为context添加Value即可... 查看详情

配置文件+多环境配置+自定义属性

二、SpringBoot配置文件1、配置文件的路径及优先级<1>、配置文件的路径SpringBoot 使用了一个全局的配置文件application.properties,该配置文件可以放置在以下几个位置:根目录下项目根目录中config目录下项目的resources目录下... 查看详情

springboot学习系列(08)—自定义servletfilter及listener

此文已由作者易国强授权网易云社区发布。欢迎访问网易云社区,了解更多网易技术产品运营经验。传统的filter及listener配置在传统的Javaweb项目中,servlet、filter和listener的配置很简单,直接在web.xml中按顺序配置好即可,程序启... 查看详情

springboot学习系列(08)—自定义servletfilter及listener

此文已由作者易国强授权网易云社区发布。欢迎访问网易云社区,了解更多网易技术产品运营经验。传统的filter及listener配置在传统的Javaweb项目中,servlet、filter和listener的配置很简单,直接在web.xml中按顺序配置好即可,程序启... 查看详情

如何在没有 XML 配置的情况下定义自定义 AuthenticationEntryPoint

...9-0107:35:18【问题描述】:我这几天一直在苦苦挣扎。我是SpringBoot的新手,喜欢不使用XML配置的想法。我创建了一个RESTfull应用程序(使用JSON)。我正在 查看详情

如何在没有 XML 配置的情况下定义自定义 AuthenticationEntryPoint

...9-0107:35:18【问题描述】:我这几天一直在苦苦挣扎。我是SpringBoot的新手,喜欢不使用XML配置的想法。我创建了一个RESTfull应用程序(使用JSON)。我正在 查看详情

springboot配置文件详解(告别xml)

参考技术A快速学会和掌握SpringBoot的核心配置文件的使用。SpringBoot提供了丰富的外部配置,常见的有:其中核心配置文件我们并不陌生,主要以Key-Value的形式进行配置,其中属性Key主要分为两种:在application.properties添加配置如... 查看详情

springboot

springboot的yml文件用profiles实现不同环境的配置1、spring.profiles.active:dev 表示的是激活那个环境的配置2、每个环境配置项是根据‘---‘这个分隔符隔离开的(对,你没看错,刚开始我也觉得不可思议)3、在每个环境的配置项中... 查看详情

springboot配置介绍

SpringBoot配置介绍SpringBoot如何进行配置在SpringBoot中默认使用Servlet3.0可以没有web.xml,没有任何的xml,我们想要做一些自定义配置,比u数据库相关信息,该如何配置呢?在没有Spring的时代,我们一般采用Java配置,Spring1.0开始,Sprin... 查看详情

springboot使用嵌入式容器,自定义filter如何配置?

Listener、Filter和Servlet是JavaWeb开发过程中常用的三个组件,其中Filter组件的使用频率最高,经常被用来做简单的权限处理、请求头过滤和防止XSS***等。如果我们使用的是传统的SpringMVC进行开发,那么只需要在Tomcat的web.xml文件中进... 查看详情

SpringBoot 2.2.2:用于自定义分页的 Jackson 序列化程序不起作用

】SpringBoot2.2.2:用于自定义分页的Jackson序列化程序不起作用【英文标题】:SpringBoot2.2.2:Jacksonserializerforcustompaginationdoesn\'twork【发布时间】:2020-04-1111:17:06【问题描述】:从SpringBoot2.2.2开始,带有Jackson(2.10.1)的自定义分页序列化... 查看详情

springboot接口快速开发神器(接口可视化界面实现)(代码片段)

简介magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTPAPI接口开发特性支持MySQL、MariaD... 查看详情

springboot项目分环境maven打包,动态配置文件,动态配置项目(代码片段)

SpringbootMaven项目打包使用Maven实现多环境testdevprod打包项目的结构在下图中可用看出,我们打包时各个环境需要分开,采用application-环境.yml的方式命名环境配置开始首先我们需要在application.yml文件中配置spring.profiles.active=@[email... 查看详情

springboot的自动装配原理自定义starter与spi机制

...;开发人员压根不能全身心的投入到业务中去。因此,SpringBoot诞生了,虽然本质上还是属于Spring,但是SpringBoot的优势在于以下两个特点:(1)约定大于配置SpringBoot定义了项目的基本骨架,例如各个环... 查看详情