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

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

本文将详细讲解SpringBoot2中的profile功能和自定义starter,在文章中会通过两个实例来演示,帮助读者更好地理解。

profile功能

什么是profile

Profile是SpringBoot提供的一个在不同环境下使用不同配置的功能。比如在开发环境中使用开发配置,在测试环境中使用测试配置,在生产环境中使用生产配置等等。实现profile的方式是在application.properties文件中定义不同的配置,并在运行时使用profile来加载相应的配置。

配置文件命名规则

SpringBoot支持四种不同的配置文件命名规则,具体如下:

  • application.properties
  • application.yml
  • application-{profile}.properties
  • application-{profile}.yml

其中application.properties和application.yml是默认的配置文件,如果指定了profile,则会优先加载application-{profile}.properties或application-{profile}.yml文件。

示例

创建示例工程

首先要创建一个SpringBoot工程,并在pom.xml文件中添加以下依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

然后创建以下文件:

  • application.properties
  • application-dev.properties
  • application-test.properties
  • application-prod.properties

并在这些文件中添加以下内容:

application.properties:

message=Hello

application-dev.properties:

message=Hello Dev

application-test.properties:

message=Hello Test

application-prod.properties:

message=Hello Prod

接下来创建一个Controller类:

@RestController
public class TestController {

    @Value("${message}")
    private String message;

    @GetMapping("/test")
    public String test() {
        return message;
    }
}

这里使用@Value注解来注入message属性的值。

运行示例

接下来我们可以运行工程并访问http://localhost:8080/test来测试不同环境下的配置是否正确。不同环境下的配置加载情况如下:

  • 没有指定profile:默认使用application.properties中的配置。
  • 指定dev profile:使用application-dev.properties中的配置。
  • 指定test profile:使用application-test.properties中的配置。
  • 指定prod profile:使用application-prod.properties中的配置。

在application.properties配置文件中不是必需加入message属性,这里加入只是为了方便演示。在实际开发中,我们可以将application.properties中的常用配置提取出来,而将不同环境下的配置分别写在不同的配置文件中,并通过SpringBoot的@Profile注解来指定使用哪个profile。

自定义starter

什么是starter

Starter是SpringBoot中的重要特性之一,它是一种约定俗成的命名方式,用于开发SpringBoot应用程序的依赖,可以帮助开发者在使用第三方库时实现快速集成,减少配置工作,提高开发效率。

自定义starter

SpringBoot已经内置了很多starter供开发者使用,但是如果需要使用第三方库中没有提供的starter,就需要自己来实现了。自定义starter需要完成以下任务:

  • 编写自定义starter源码
  • 添加SpringBoot自动配置
  • 发布starter到Maven仓库中

示例

创建示例库

首先创建一个SpringBoot工程,该工程将是我们自定义starter的源码工程。在pom.xml文件中添加以下依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-autoconfigure</artifactId>
   <version>2.6.1</version>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
   <version>2.6.1</version>
   <scope>compile</scope>
</dependency>
  • spring-boot-autoconfigure:该依赖是SpringBoot提供的自动配置核心库。
  • spring-boot-starter:该依赖是SpringBoot提供的starter库。

创建一个自定义类,并添加一个属性msg:

@ConfigurationProperties(prefix = "my")
public class MyProperties {

    private String msg = "World";

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

在类上使用@ConfigurationProperties来指定前缀为my,并添加一个属性msg。

然后创建一个自动配置类MyAutoConfiguration,实现自动配置逻辑:

@Configuration
@ConditionalOnClass(MyProperties.class)
@EnableConfigurationProperties(MyProperties.class)
public class MyAutoConfiguration {

    @Autowired
    private MyProperties myProperties;

    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnProperty(prefix = "my", value = "enabled", havingValue = "true")
    public MyService myService() {
        return new MyService(myProperties.getMsg());
    }
}

先解释一下各个注解的作用:

  • @Configuration:标识该类为Spring配置类。
  • @ConditionalOnClass:当类路径下有指定的类时才加载该配置类。
  • @EnableConfigurationProperties:开启@ConfigurationProperties注解的配置功能。
  • @Autowired:用于依赖注入。
  • @Bean:用于注册Spring Bean。
  • @ConditionalOnMissingBean:当容器中不存在指定名称或类型的Bean时才注册。
  • @ConditionalOnProperty:当指定属性存在且值为指定值时才注册。

创建一个Service类MyService:

public class MyService {

    private String msg;

    public MyService(String msg) {
        this.msg = msg;
    }

    public String sayHello() {
        return "Hello " + msg;
    }
}

接下来创建一个starter模块,并将自定义的类添加到该模块下。

发布starter

将starter模块打包并发布到Maven仓库中,在使用该starter的应用中可以通过如下方式来使用:

pom.xml文件中添加依赖:

<dependency>
   <groupId>com.example</groupId>
   <artifactId>my-spring-boot-starter</artifactId>
   <version>1.0.0</version>
</dependency>

然后在应用中就可以注入MyService,并调用sayHello方法了:

@RestController
public class TestController {

    @Autowired
    private MyService myService;

    @GetMapping("/test")
    public String test() {
        return myService.sayHello();
    }
}

在访问http://localhost:8080/test时,应用会返回"Hello World"。可以通过application.properties文件中指定属性my.msg来覆盖默认值。例如:

my.msg=Jack

这时应用会返回"Hello Jack"。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot2零基础到精通之profile功能与自定义starter - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java excel数据导入mysql的实现示例详解

    背景介绍 Java语言非常流行,并且广泛使用于各种应用程序开发中,其中Java处理Excel文件并将数据导入MySQL数据库是非常常见的场景。在这里我们将会介绍Java excel数据导入MySQL的实现方式,并提供一些示例演示。 准备工作 在开始之前,我们需要进行一些准备工作,其中需要的工具有: IDEA开发工具 Maven构建工具 Excel解析工具:P…

    Java 2023年5月20日
    00
  • js获取url参数的使用扩展实例

    下面是“js获取url参数的使用扩展实例”的完整攻略。 1. 获取URL参数的基础方法 获取URL参数是前端开发常用的一项技巧,一般可以通过以下方式获取: function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)…

    Java 2023年6月15日
    00
  • maven 解包依赖项中的文件的解决方法

    通过 Maven 进行项目构建时,通常会依赖许多第三方库和组件。这些依赖项可以通过 Maven 的依赖管理功能来添加到项目中,并在构建时自动下载和配置。但是,有时候可能需要将某些依赖项中的文件提取出来,例如:将依赖的jar包中的资源文件提取到指定的文件夹中。 下面是一种将 Maven 依赖项中的文件解压缩的方法: 步骤: 找到项目的pom.xml文件,添加m…

    Java 2023年6月2日
    00
  • Session过期后实现自动跳转登录页面

    要实现Session过期后自动跳转到登录页面,需要进行以下步骤: 1. 设置Session过期时间 在服务器端的配置文件中设置Session过期的时间,例如设置为30分钟。具体的配置方式可以因服务器而异,例如在PHP中可以通过php.ini文件中的session.gc_maxlifetime参数来设置过期时间。在JAVA中可以通过web.xml文件或者代码来…

    Java 2023年6月16日
    00
  • 用IDEA创建SpringBoot项目的详细步骤记录

    下面我将为你详细讲解用IDEA创建SpringBoot项目的详细步骤记录。步骤如下: 1. 安装并配置开发环境 首先需要安装Java开发环境和IDEA开发工具,并且配置好相关环境变量和插件。 Java JDK的安装可以访问官方网站 https://www.oracle.com/java/technologies/javase-jdk16-downloads.…

    Java 2023年5月19日
    00
  • java之Object类用法实例

    Java之Object类用法实例 在Java中,所有的类都是继承自Object类,因此Object类是Java中最基本的类之一。本文将详细讲解Object类的用法,包括几个重要的方法以及示例说明。 Java Object类的方法 toString() toString() 方法是Object类中最基本的方法之一,通常用于返回对象的字符串表示。默认情况下,to…

    Java 2023年5月26日
    00
  • Hibernate之环境搭建及demo分享

    下面我将为大家详细讲解“Hibernate之环境搭建及demo分享”的完整攻略。 环境搭建 1. 安装Java Development Kit(JDK) 在官网下载JDK,安装并配置环境变量。 2. 安装Hibernate (1)下载Hibernate框架,解压后将jar包添加到项目编译路径中。 (2)配置Hibernate所需要的数据库驱动,如MySQL …

    Java 2023年5月19日
    00
  • java 字符串匹配函数

    Java 字符串匹配函数指的是在字符串中查找特定子串出现的位置或数量的函数。在 Java 中,有多种实现字符串匹配的函数,其中最常用的是 String 类的相关方法以及正则表达式。 下面是 Java 字符串匹配的完整攻略: 使用 String 方法进行字符串匹配 Java 提供了一系列的 String 方法,支持在字符串中查找特定子串出现的位置或数量。这些方…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部