【SpringBoot 2】(十二) profile功能 自定义starter

写在前面在这里插入图片描述🛫更多知识总结见SpringBoot 2专栏
🚕本篇知识点总结自尚硅谷雷神的视频
🚒博主对于该知识尚在学习阶段
🚄如果发现存在问题请毫不吝啬的指出
🚀🚀扎哇太枣糕的博客首页🚀🚀

文章目录

  • 1 profile功能
    • 1.1 profile的生效规则
    • 1.2 外部配置源
  • 2 自定义starter

1 profile功能

1.1 profile的生效规则

为了方便多环境适配,SpringBoot简化了profile功能,具体的使用规则如下:
  在resources文件夹下可以一次创建多个application-xxx.yaml配置文件,分别对应着不同的生产、测试等环境,但是只有命名为application.yaml(或者后缀.properties的文件)文件会默认加载,所以说其他环境的配置文件中的配置信息都不会生效。在这里插入图片描述  如果是想切换配置文件环境的话,就可以在默认配置文件中配置

spring:profiles:active: test

在这里插入图片描述  当不同配置文件的配置项产生冲突的时候,首先若是其他环境都没有激活的话使用默认配置文件的配置,若是在默认配置文件中激活了其他环境的配置就按激活的配置在这里插入图片描述  使用命令行运行jar包期间可以不用重新修改配置文件再次打包,可以通过命令行参数配置进行修改激活的环境。首先需要对项目进行打包并打开jar包的存储位置在这里插入图片描述进入dos窗口输入命令修改环境并运行jar包在这里插入图片描述

java -jar test-profile-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

在这里插入图片描述
  我们该可以使用@Profile(“xxx”)注解标注在类、方法或参数绑定上,表示在指定环境下才会执行该类、方法或者进行配置文件与POJO类的绑定在这里插入图片描述

1.2 外部配置源

  常用可以作为外部配置源的有:Java属性文件、YAML文件、环境变量、命令行参数。其中配置文件的默认扫描位置也不只单单一个,以下五个位置都能被SpringBoot默认扫到,加载顺序由高到低但是优先级相反(也就是说配置项相同的时候后面的可以覆盖前面的):(1) classpath 根路径(2) classpath 根路径下config目录(3) 项目jar包同层级(4) 项目jar包同层级的config目录(5) config目录的直接子目录

2 自定义starter

  SpringBoot的starter场景启动器想必大家都不陌生,在SpringBoot开发的时候不管进行什么开发只要用到哪种技术第一都是引入它的starter场景启动器,接下来让我们根据SpringBoot中的源码自定义一个场景启动器。
  第一步: 使用Spring Initializr创建一个SpringBoot项目作为autoconfiguration,构建项目目录如下:在这里插入图片描述

封装自定义starter业务的HelloService

/*** @author : mereign* @date : 2022/3/12 - 20:55* @desc : service组件,内部定义了方法*/
public class HelloService {@AutowiredHelloProperties helloProperties;public String sayHello(String userName) {return helloProperties.getPrefix() + ":" + userName + "》" + helloProperties.getSuffix();}
}

封装配置文件属性的HelloProperties

/*** @author : mereign* @date : 2022/3/12 - 20:57* @desc :  配置文件的属性封装,默认自动导入容器中*/
@ConfigurationProperties("com.xiaochen")
public class HelloProperties {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)// 容器注入组件@Beanpublic HelloService helloService() {HelloService helloService = new HelloService();return helloService;}
}

resources文件夹下创建MATE-INF目录下spring.factories文件,这样才能加载到指定的自动配置类

# Auto Configure
org.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

@RestController
public class HelloController {@AutowiredHelloService helloService;@GetMapping("/hel")public String sayHello() {return helloService.sayHello("张三");}
}

配置测试项目的配置文件

com.xiaochen.prefix=jaka
com.xiaochen.suffix=hafd

启动测试项目访问controller的请求映射
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pb 怎么判断是 小数_考试90分以上的孩子是怎么学数学的?听听老师怎么说?

一二年级&#xff0c;考试上九十分很轻松。但是&#xff0c;不少小朋友一上三年级&#xff0c;成绩就落下来了。那么&#xff0c;我们来看看三年级起&#xff0c;考试还能够保持在90分以上的孩子是怎么学习数学的吧&#xff01;第一&#xff0c;计算能力过关通过这两张图片的对…

快速上手Mybatis-Plus 入门案例

写在前面&#x1f6eb;更多知识总结见Mybatis-Plus专栏 &#x1f695;内容总结自尚硅谷杨博超老师的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

黑苹果 选择语言 点不了_什么是天然的“黑钻”?—科普贴

天然黑钻也被成为“碳酸氢”&#xff0c;具有与白钻相同的化学成分&#xff0c;然而黑钻石的晶体结构是不同的&#xff0c;这意味着它们由许多小晶体组成&#xff0c;它们以随机的形式粘在一起&#xff0c;而不是一个具有可识别自然线的固体锥形。天然黑钻石有极高的含物&#…

sim卡没坏但苹果手机无服务_解决手机插SIM卡后都显示“无SIM卡”的故障问题

故障现象顾客描述手机插SIM卡后都显示“无SIM卡”。维修过程引起插入SIM卡却显示“无SIM卡”的故障&#xff0c;除了可能是SIM卡座的供电、时钟、复位及SIM卡插入检测信号不正常导致外&#xff0c;还有可能是基带不正常导致的。插上手机卡&#xff0c;左上角提示“无SIM卡”&am…

Mybatis-Plus实现简单的增删改查 实体类上的注解

写在前面&#x1f6eb;更多知识总结见Mybatis-Plus专栏 &#x1f695;内容总结自尚硅谷杨博超老师的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

conda失败说没有写权限_爱情中,为什么男生表白失败,女生还说可以继续做朋友,想过没有...

在爱情中&#xff0c;不是每个男生都是幸运的&#xff0c;也不是每次的表白都是如你所愿的。有成功总有失败&#xff0c;成功是喜悦的&#xff0c;但是失败却是痛苦的。不过有的时候男生和女生表白以后&#xff0c;女生对男生说了这样的一段&#xff0c;其实我希望以后我们还是…

Mybatis-Plus中Wrapper条件构造器的使用

写在前面 &#x1f6eb;更多知识总结见Mybatis-Plus专栏 &#x1f695;内容总结自尚硅谷杨博超老师的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680…

springboot设置默认值_线上Bug无法复现?老司机教你一招,SpringBoot远程调试不用愁!...

前言在部署线上项目时&#xff0c;相信大家都会遇到一个问题&#xff0c;线上的 Bug 但是在本地不会复现&#xff0c;多么无奈。此时最常用的就是取到前端传递的数据用接口测试工具测试&#xff0c;比如 POSTMAN&#xff0c;复杂不&#xff0c;难受不&#xff1f;今天陈某教你一…

Mybatis-Plus的分页 乐观锁插件 通用枚举 多数据源

写在前面&#x1f6eb;更多知识总结见Mybatis-Plus专栏 &#x1f695;内容总结自尚硅谷杨博超老师的视频 &#x1f692;博主对于该知识尚在学习阶段 &#x1f684;如果发现存在问题请毫不吝啬的指出 &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;…

等待的操作过时_不会过时的6种网站seo优化操作

SEO优化一直在变化&#xff0c;百度和谷歌的算法也在不断的迭代更新&#xff0c;所以竞争永远不会停止。今天小编就来给大家分享一下&#xff0c;6种不会过时的网站seo优化操作。1.保持正常优化为网站访客提供高质量的内容、卓越的用户体验和安全性以及卓越的技术网站。这可能需…

java的for循环取出数据只是拿到最后一个_一问SQL优化就无从藏身?那只是你对原理的精髓掌握不深

​曾几何时&#xff0c;我信誓旦旦的认为只要 SQL 写的好&#xff0c;面试过程永不倒。结果在一次又一次的征途中&#xff0c;「最终还是以完败落下帷幕」。结果都源于注重使用而忽略原理&#xff0c;从而不知也不了解「SQL」优化应如何面对。读文的你&#xff0c;如今可有这样…

SpringBoot前后端分离解决跨域问题的三种解决方案

&#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680;** 文章目录&#x1f34a;什么是跨域&#x1f34a;跨域问题的解决策略&#x1f34a;三种解决方法&#x1f34a;什么是跨域 想要知道什么是跨域的话&#xff0c;我们可以通过一个小案例简单了解一下跨…

ant design vue 树形控件_官宣!vue.ant.design 低调上线

点击右上方&#xff0c;关注开源中国OSC头条号&#xff0c;获取最新技术资讯官宣&#xff01;官宣&#xff01;官宣&#xff01;是的&#xff0c;你没看错就是那个 https://vue.ant.design。至此&#xff0c;Ant Design 已经全面覆盖了 React、Angular、Vue 三大前端框架&#…

哪款笔记本电脑好_扫地机器人哪个牌子好?口碑最好的扫地机器人

随着智能家居的普及&#xff0c;让我们的生活变得越来越智能。扫地机器人的出现完美解决了宠物的毛发问题&#xff0c;为自己腾出了大量的时间。扫地机器人绝对能提升你的生活品质&#xff0c;通过机器内建的智能清洁模式、自定义规划区域进行打扫&#xff0c;使用手机APP进行控…

使用mybatisplus的通用枚举实现存储显示相分离

狡兔尚且三窟&#xff0c;多学一招总没错吧&#xff1f; &#x1f680;&#x1f680;扎哇太枣糕的博客首页&#x1f680;&#x1f680; &#x1f30f; 抛出问题 如果让你实现这么一个功能&#xff1a;将性别使用数字存储到数据库中&#xff0c;但是前端需要获取到的是具体的性…

JDK和JRE的区别?main方法的注意点?强制和自动类型转换?

&#x1f4a1;涉及的知识点速通&#x1f6eb; JDK和JRE傻傻分不清?&#x1f6eb; HelloWorld的输出都经历了啥&#xff1f;&#x1f6eb; Java的三个版本都是啥&#xff1f;&#x1f6eb; 关于main方法你都知道啥&#xff1f;&#x1f6eb; 强制and自动类型转换都是啥?各位小…

安卓10不支持qmc解码_Root神器支持安卓10 面具Magisk v20.4+Magisk Manager v7.5.1

Magisk的功能和xposed框架的功能差不多&#xff0c;也有很多插件可安装&#xff0c;而且自带root&#xff0c;刷入这个Magisk后你的rom同时也就有root了(支持安卓7.0&#xff0c;7.1&#xff0c;8.0&#xff0c;8.1,9,10)这也是目前安装8.1root的普遍方法&#xff0c;因为目前s…

==和equals判等、空串和null串、字符串常用API

&#x1f4a1;涉及的知识点速通&#x1f6eb; 关于变量和常量你都知道啥?&#x1f6eb; &和&&#xff06;、|和||有什么区别&#xff1f;&#x1f6eb; 关于字符串的问题你能答对几道&#xff1f;&#x1fa82; 可以修改一个字符串中的值吗?&#x1fa82; 字符串使用…

俩台电脑怎么设置同一局域网_方法 | 把手机上的照片传到电脑上

我想把手机上的照片/视频传到电脑上怎么办? 什么云盘&#xff0c;手机助手等等全扔到一边去&#xff0c;不用。请让我慢慢道来&#xff1a;现在&#xff0c;人们手机用的越来越多&#xff0c;即使在大街上&#xff0c;到处都是“低头族”。但是&#xff0c;有好多小伙伴问&…

数据持化技术的发展演变(SQL、JDBC、mybatis)

文章目录1 简单SQL语句1.1 查询1.2 新增1.3 修改1.4 删除1.5 多表查询2 JDBC2.1 什么是JDBC2.2 什么是jar和maven2.3 JDBC的使用2.4 JDBC总结3 mybatis3.1 什么是ORM?为什么是ORM不是JDBC&#xff1f;3.2 mybatis的使用3.3 mybatis总结4 mybatis与jdbc的逻辑相同处环境配置 j…