SpringBoot2零基础到精通之profile功能与自定义starter

目录
  • 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 {

    @Autowired
    HelloProperties 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)
    // 容器注入组件
    @Bean
    public 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 {

    @Autowired
    HelloService helloService;

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

配置测试项目的配置文件

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

启动测试项目访问controller的请求映射

到此这篇关于SpringBoot2零基础到精通之profile功能与自定义starter的文章就介绍到这了,更多相关SpringBoot2 profile内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java SpringBoot自定义starter详解

    目录 一.什么是SpringBoot starter机制 二.为什么要自定义starter ? 三.什么时候需要创建自定义starter? 四.自定义starter的开发流程(案例:为短信发送功能创建一个starter) 1.细节:命名规范 2.必须引入的依赖 3.编写相关属性类(XxxProperties):例如 SmsProperties.java 4.编写Starter项目的业务功能 5.编写自动配置类AutoConfig 6.编写spring.factories文件加载自动配置类 7.打

  • SpringBoot激活profiles的几种方式

    多环境是最常见的配置隔离方式之一,可以根据不同的运行环境提供不同的配置信息来应对不同的业务场景,在SpringBoot内支持了多种配置隔离的方式,可以激活单个或者多个配置文件. 激活Profiles的方式 激活的profiles要在项目内创建对应的配置文件,格式为application-{profile}.yml. 命令行方式 命令行方式是一种外部配置的方式,在执行java -jar命令时可以通过--spring.profiles.active=test的方式进行激活指定的profiles列表.

  • SpringBoot 动态配置Profile环境的方式

    下面的例子是通过修改开发环境和生产环境的动态配置的端口号的示例: 开发环境端口号是 8081 生产环境端口号是 8082 springboot的配置方式 springboot的配置有两种:properties和yaml或yml properties方式配置 1.在application.properties配置环境 创建两个application-xx.properties 一个application-dev.properties #开发环境 一个application-pro.properti

  • springboot获取profile的操作

    目录 springboot获取profile 通过代码获取profile 通过注解的方式来获取Profile spring profile的基本使用 Spring profile在我们系统中的使用非常简单 我们的问题出在哪里呢? springboot获取profile 通过代码获取profile @Component public class ProfileUtils implements ApplicationContextAware { private static ApplicationC

  • SpringBoot Profiles 多环境配置及切换

    目录 前言 默认环境配置 默认运行环境 多环境配置 多环境切换 小结 前言 大部分情况下,我们开发的产品应用都会根据不同的目的,支持运行在不同的环境(Profile)下,比如: 开发环境(dev) 测试环境(test) 预览环境(pre) 生产环境(prod) 这里的 环境 实际上是一个统称,不同的环境可能代表着 使用的域名.端口.实例数目是不同的: 连接的数据库地址.端口.名称是不同的: 使用的日志输出格式.级别.保存时间是不同的: 以数据库为例,应用在开发环境下运行时,连接的是开发环境对应的

  • SpringBoot如何自定义starter

    目录 1. 什么是starter 2. 自动配置原理 2.1 自动配置生效 3. 自定义starter 3.1 命名规范 4.总结 4.1为什么要自定义starter? 4.2 自定义starter的案例 1. 什么是starter Springboot的出现极大的简化了开发人员的配置,而这之中的一大利器便是springboot的starter,starter是springboot的核心组成部分,为什么说引入如下依赖就满足了日常web开发? <dependency>   <groupId

  • SpringBoot启动指定profile的多种方式

    配置文件中设置 通常在公司级别的项目中,我们可能会写多个application- dev/prod.yml ,然后我们通常会在application.yml配置文件中写入 spring: profiles: active: dev 这里会指定激活的profile是application- dev.yml 注意:application.yml中类似Java中的父类,其他application- dev/prod.yml会继承这个文件,可以进行重写,没有进行重写的属性我们也是能直接读取的,比如app

  • SpringBoot中Starter的作用小结

    一.官方文档对Starter的介绍 通过官方文档里面的介绍,Starter其实就是Spring针对不用的开发场景,给我们提供的"套餐".类似于,我们去KFC吃饭,可能有些同学们是会选择自己喜欢吃的食物去下单,但是,有些同学们对饮食并没有那么挑剔,直接就去点物美价廉的香辣鸡腿堡套餐了.而这个香辣鸡腿堡套餐,就是我们今天要介绍的Starter了. 二.Starter分类 1.Spring官方给我们提供了多种Starter的选择方式,大概50多种Starter供我们可以选择.其中,根据偏应用

  • 详解SpringBoot如何自定义Starter

    目录 阅读收获 本章源码下载 什么是Starter 为什么使用Starter Springboot自动配置 spring.factories Starter开发常用注解 Full全模式和Lite轻量级模式 Starter命名规范 开发Starter 1. 创建Starter项目 2. 添加依赖 3. 编写属性类 4. 自定义业务类 5. 编写自动配置类 6. 编写spring.factories 7. 编写配置提示文件(非必须) 测试Starter 1. 前置环境 2. 添加依赖 3. 测试类

  • SpringBoot2零基础到精通之profile功能与自定义starter

    目录 1 profile功能 1.1 profile的生效规则 1.2 外部配置源 2 自定义starter 1 profile功能 1.1 profile的生效规则 为了方便多环境适配,SpringBoot简化了profile功能,具体的使用规则如下: ①在resources文件夹下可以一次创建多个application-xxx.yaml配置文件,分别对应着不同的生产.测试等环境,但是只有命名为application.yaml(或者后缀.properties的文件)文件会默认加载,所以说其他环

  • SpringBoot2零基础到精通之数据与页面响应

    目录 1 数据响应 1.1 数据响应(JSON为例) 1.2 数据响应之内容协商 2 页面响应 2.1 模板引擎之Thymeleaf 2.2 拦截器 2.3 文件上传 1 数据响应   数据响应一般分为两种:页面响应和数据响应,一般来说页面响应是用来开发一些单体项目(也就是前后端都在一个开发工具中),而数据响应则是用来进行前后端分离开发的项目,前端发送过来请求后端响应相应的数据. 1.1 数据响应(JSON为例)   如果想让SpringMVC响应返回一个JSON类型的数据,首先需要在项目的po

  • SpringBoot2零基础到精通之数据库专项精讲

    目录 1 数据库连接 1.1 配置数据库连接信息 1.2 整合Druid数据源 2 SpringBoot整合MyBatis 2.1 配置文件开发 2.2 纯注解开发 3 SpringBoot整合MyBatis-Plus 3.1 普通的CRUD方法 3.2 MyBatis-plus的分页实现 1 数据库连接 1.1 配置数据库连接信息   如果想要使用数据库连接池连接数据库进行SQL操作的话,在SpringBoot中需要经过如下三个步骤: 第一步: 导入jdbc开发的启动场景 <dependenc

  • SpringBoot2零基础到精通之异常处理与web原生组件注入

    目录 1 异常处理 1.1 异常处理之错误页面 1.2 异常处理之精确捕获 1.3 异常处理之自定义异常 1.4 异常处理之框架底层异常 2 web原生组件的注入 2.1 servlet组件 2.2 filter组件 2.3 listener组件 3 web实现定制化总结 1 异常处理   默认情况下,SpringBoot会提供/error处理所有的错误请求并返回相应的信息,对于浏览器客户端来说会返回一个包含时间戳.状态码.错误信息.携带的自定义异常信息.发生错误的路径等信息的错误Whitela

  • SpringBoot2零基础到精通之JUnit 5与指标监控

    目录 1 单元测试JUnit 5 1.1JUnit 5简介以及使用 1.2 常用的测试注解 1.3 断言(assertions) 1.4 前置条件(assumptions) 1.5 嵌套测试 1.6 参数化测试 2 指标监控 2.1 使用url实现监控 2.2 可视化的监控平台 1 单元测试JUnit 5 1.1JUnit 5简介以及使用   JUnit5作为最新版本的JUnit框架与之前版本的Junit框架有很大的不同.JUnit5主要由三个不同子项目的几个不同模块组成:JUnit Platf

  • SpringBoot2零基础到精通之自动配置底层分析及小技巧

    目录 1 自动配置底层分析 1.1 ​自动配置注解解析 1.2 修改默认配置 1.3 总结 1.4 最佳实践 2 开发小技巧 2.1 Lombok简化开发 2.2 伪热更新 2.3 创建Spring Initailizr项目 1 自动配置底层分析 1.1 ​自动配置注解解析 @SpringBootApplication注解是SpringBoot的核心注解,他是由以下三个注解总和而成. @SpringBootConfiguration 该注解底层有一个@Configuration注解,标明当前类是

  • SpringBoot2零基础到精通之配置文件与web开发

    目录 1 配置文件 1.1 yaml文件 1.1.1 基本语法 1.1.2 数据格式 1.2 数据绑定时关键字提示 2 web开发 2.1 静态资源的存放与访问 2.2 webjars 2.3 web小技巧 2.3.1 index页面 2.3.2 网页小图标 2.4 web场景源码浅析 1 配置文件   之前说过,配置文件大致分两种类型:properties.yaml.其中properties是最常规的配置文件类型:使用键值对等号的格式来对各种参数进行配置,后缀为.properties,在这里就

  • SpringBoot2零基础到精通之映射与常用注解请求处理

    目录 1 请求映射 1.1 Rest风格 1.2 表单提交Rest的原理 1.3请求映射的原理 2 请求处理常用注解 2.1 @RequestParam 2.2 @PathVariable 2.3 @RequestHeader 2.4 @RequestBody 2.5 @RequestAttribute 2.6 @RequestAttribute 3 方法参数小技巧 3.1 复杂参数属性值 3.2 自定义参数实现数据绑定 1 请求映射   在SpringBoot中使用@XxxMapping注解完

  • Android 零基础到精通之广播机制

    目录 广播机制简介 接收系统广播 1. 动态注册监听时间变化 2. 静态注册实现开机启动 发送自定义广播 1. 发送标准广播 2. 发送有序广播 广播机制简介 Android 中的广播主要分为两种类型: 标准广播:一种异步执行的广播,广播发出后,所有的 BroadcasterReceiver 几乎会在同一时刻受到这条广播消息,没有任何时间顺序 有序广播:一种同步执行的广播,广播发出后,同一时刻只有一个 BroadcasterReceiver 能够接受这条广播消息,当该 BroadcasterRe

  • 零基础易语言入门教程(三)之了解控制台程序

    易语言简介: 易语言是一门以中文作为程序代码编程语言.以"易"著称.创始人为吴涛.早期版本的名字为E语言.易语言最早的版本的发布可追溯至2000年9月11日.创造易语言的初衷是进行用中文来编写程序的实践.从2000年至今,易语言已经发展到一定的规模,功能上.用户数量上都十分可观. 易语言和其它编程语言一样都有后台程序,它也不一定必须是窗口程序的了,下面小编带大家了解易语言的控制台程序. 方法和步骤如下所示: 1.延时命令: 首先学习一个第一个命令,该命令可将其脚本界面延时.1000毫秒

随机推荐