springboot profiles,spring的profile使用详解
目录
1配置文件功能1.1配置文件的有效规则1.2外部配置源2自定义启动器
1 profile功能
00-1010为了方便多环境适应,SpringBoot简化了profile功能。具体使用规则如下:可以一次在resources文件夹下创建多个application-xxx.yaml配置文件,分别对应不同的生产和测试环境。但是,只有名为application.yaml的文件(或带后缀的文件。属性),所以其他环境的配置文件中的配置信息不会生效。
如果要切换配置文件环境,可以在默认配置文件中进行配置。
spring : profiles : active :测试
当不同配置文件的配置项冲突时,第一,如果没有激活其他环境,则使用默认配置文件的配置;如果在默认配置文件中激活了其他环境,将使用激活的配置。
在命令行运行jar包的过程中,不需要再次修改配置文件就可以再次打包,通过命令行参数配置可以修改激活的环境。首先,您需要打包项目,并打开jar包的存储位置。
进入dos窗口,输入命令修改环境并运行jar包。
java -jar测试-概要文件-0 . 0 . 1-快照. jar-spring . profiles . active=测试
我们可以使用@ @Profile("xxx ")注释来标记类、方法或参数的绑定,表示类、方法或配置文件只有在指定的环境下才会绑定到POJO类。
00-1010常用的外部配置源有:Java属性文件、YAML文件、环境变量、命令行参数。配置文件的默认扫描位置并不是只有一个,默认情况下SpringBoot可以扫描以下五个位置,加载顺序从高到低,但优先级相反(也就是说,配置项相同时,后面的可以覆盖前面的):(12)类路径根路径(2)类路径根路径下的config目录(3)同级的project jar包(4)project jar包同级的config目录(5)config目录的直接子目录。
00-1010 SpringBoot的入门场景发射器想必大家都不陌生。不管SpringBoot的开发采用了什么样的技术,首先介绍的是starter场景启动器。接下来,让我们根据Spring Boot的源代码定制一个场景启动器。
步骤1:使用Spring Initializr创建一个SpringBoot项目作为自动配置,并如下构建项目目录:
封装定制业务的HelloService
/* * * @ author : me reign * @ date 3360 2022/3/12-20336055 * @ desc 3360 service组件,内部用方法*/public class hello service定义{ @ autowired hello properties hello properties;公共字符串say hello(String userName){ return hello properties . get prefix(): userName 》 hello properties . get suffix();}}封装配置文件属性的HelloProperties。
/* * * @ author 3360 me reign * @ date 3360 2022/3/12-20336057 * @ desc 3360配置文件的属性包默认自动导入到容器中*/@ Configuration Properties( com . xiaochen )Public Class Hello Properties { Private
String prefix; private String suffix; public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix = prefix; } public String getSuffix() { return suffix; } public void setSuffix(String suffix) { this.suffix = suffix; }}决定是否注册组件的自动配置类HelloServiceAutoConfiguration
/** * @author : mereign * @date : 2022/3/12 - 21:04 * @desc : 一个自动配置类,决定是否向容器中注册service组件,以及配置文件绑定 */// 表明这是一个配置类@Configuration// 配置文件绑定@EnableConfigurationProperties(HelloProperties.class)public class HelloServiceAutoConfiguration {// 如果容器中没有这个组件就是用下面的方法进行容器的helloService组件注入,如果有的话就用容器中的@ConditionalOnMissingBean(HelloService.class) // 容器注入组件 @Bean public HelloService helloService() { HelloService helloService = new HelloService(); return helloService; }}
resources文件夹下创建MATE-INF目录下spring.factories文件,这样才能加载到指定的自动配置类
# Auto Configureorg.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xiaochen.auto.HelloServiceAutoConfiguration
第二步: 创建一个maven项目作为自定义starter,只需要在它的pom文件中导入autoconfiguration的项目依赖
<dependencies> <dependency> <groupId>com.xiaochen</groupId> <artifactId>test-autoconfigure</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency></dependencies>
第三步: 分别对两个项目模块在生命周期中选择clean和install,将两个模块打成jar包
第四步: 创建测试项目,目录结构如下
pom文件中导入自定义的starter
<dependency> <groupId>com.xiaochen</groupId> <artifactId>test-starter</artifactId> <version>1.0-SNAPSHOT</version></dependency>
创建一个测试使用的controller
@RestControllerpublic class HelloController { @Autowired HelloService helloService; @GetMapping("/hel") public String sayHello() { return helloService.sayHello("张三"); }}
配置测试项目的配置文件
com.xiaochen.prefix=jakacom.xiaochen.suffix=hafd
启动测试项目访问controller的请求映射
到此这篇关于SpringBoot2零基础到精通之profile功能与自定义starter的文章就介绍到这了,更多相关SpringBoot2 profile内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。