SpringBoot之SpringBoot自定义Starter场景启动器
SpringBoot之SpringBoot自定义Starter场景启动器
概念:
相信能看到这里的应该清楚什么是场景启动器,而SpringBoot能够快速整合第三方环境依靠的就是Maven整合依赖+自定义Starter
比如我们之前用的
-
spring-boot-starter-web
-
spring-boot-starter-aop
-
spring-boot-starter-jta-atomikos
-
spring-boot-starter-test
-
spring-boot-starter-freemarker
-
spring-boot-starter-thymeleaf
-
spring-boot-starter-jdbc
- ...
这些以spring-boot-starter开头的都是官方提供的,而mybatis的就不是 mybatis-spring-boot-starter 他是以mybatis开头的,以spring....结尾的,这说明他是第三方自定义的starter,别人能定义说明我们自己也能定义
通过图片也能看出来,mybatis的图标是mybatis的,其他的都是SpringBoot的
由此我们如果自己定义starter建议采用xxx-spring-boot-starter这样的命名
自定义Starter
新建项目
IDEA,创建一个SpringBoot项目,如果不会的可以看我之前的《SpringBoot之IDEA创建SpringBoot项目》
创建完成的目录结构
Pom.xml修改过了,去除掉多余的配置,猪油AutoConfiguration的依赖,其他的之后再加
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.springboot</groupId> <artifactId>flower-spring-boot-starter</artifactId> <version>0.0.1-SNAPSHOT</version> <name>flower-spring-boot-starter</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> </dependencies> </project>
开始编写代码
TokenProperties.java
package com.springboot.util; import org.springframework.boot.context.properties.ConfigurationProperties; /** * @author ZYGisComputer */ @ConfigurationProperties(prefix = "flower") public class TokenProperties { private String tokenRedisHost; private String tokenRedisPwd; public String getTokenRedisHost() { return tokenRedisHost; } public void setTokenRedisHost(String tokenRedisHost) { this.tokenRedisHost = tokenRedisHost; } public String getTokenRedisPwd() { return tokenRedisPwd; } public void setTokenRedisPwd(String tokenRedisPwd) { this.tokenRedisPwd = tokenRedisPwd; } @Override public String toString() { return "TokenProperties{" + "tokenRedisHost='" + tokenRedisHost + '\'' + ", tokenRedisPwd='" + tokenRedisPwd + '\'' + '}'; } }
使用@ConfigurationProperties注解根据前缀依赖注入属性值
TokenService.java
package com.springboot.service; import com.springboot.util.TokenProperties; import org.springframework.beans.factory.annotation.Autowired; /** * @author ZYGisComputer */ public class TokenService { @Autowired private TokenProperties tokenProperties; public String getToken(){ return tokenProperties.toString(); } }
通过服务返回属性值,这里做的是模拟数据,没有真的业务
TokenAutoConfiguration.java
package com.springboot.config; import com.springboot.service.TokenService; import com.springboot.util.TokenProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author ZYGisComputer */ @Configuration @EnableConfigurationProperties(value = {TokenProperties.class}) public class TokenAutoConfiguration { @Bean public TokenService tokenService(){ return new TokenService(); } }
通过TokenAutoConfiguration来完成TokenProperties的注册和TokenService的注册
在resource下创建META-INF文件夹,并创建spring.factories
表示Spring在启动中会加载这个文件
spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.springboot.config.TokenAutoConfiguration
到此编写完成
通过Maven安装到本地
先执行clean 再执行install
安装成功
使用Starter
项目Maven依赖
<dependency> <groupId>com.springboot</groupId> <artifactId>flower-spring-boot-starter</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
在项目依赖完成后,在application.yml配置中写是没有提示的,只需要在flower-spring-boot-starter项目中的Pom.xml添加上这个依赖就可以
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
添加完成后重新clean install然后依赖这个starter的项目Maven刷新重新输入就有提示了
修改application-dts.yml
这样我就可以使用这个自定义starter了,修改代码
编写一个获取接口
启动项目测试
测试成功
作者:彼岸舞
时间:2021\01\29
内容关于:SpringBoot
本文来源于网络,只做技术分享,一概不负任何责任