手写一个springboot的starter
生活随笔
收集整理的這篇文章主要介紹了
手写一个springboot的starter
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
starter 自動注入組件,為用戶省去組件引入、配置類、jar包沖突解決。starter一般都包含2個類:ConfigurationProperties和AutoConfiguration。
命名規則
由于SpringBoot官方本身就提供了很多Starter,為了區別那些是官方的,哪些是第三方的,所以SpringBoot官方提出:
第三方提供的Starter統一用 xxx-spring-boot-starter
而官方提供的Starter統一用 spring-boot-starter-xxx
手寫starter
項目目錄
1、pom.xml
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>yzh-spring-boot-starter</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><java.version>1.8</java.version><spring-boot.version>2.4.6</spring-boot.version></properties><dependencies><!-- 用來提示用的 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><!-- 禁止傳遞依賴 --><optional>true</optional><version>${spring-boot.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>${spring-boot.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>2、屬性配置類
@ConfigurationProperties(prefix = "yzh.hello") @Data public class HelloProperties {private String name = "default";}3、業務執行類
@Data @NoArgsConstructor @AllArgsConstructor public class HelloStarter {private HelloProperties helloProperties;public String hello() {return "welcome " + helloProperties.getName() + "!";}}4、自動裝配類
@ConditionalOnClass(HelloStarter.class) @EnableConfigurationProperties(HelloProperties.class) @Configuration public class HelloAutoConfiguration {@Beanpublic HelloStarter helloStarter(HelloProperties helloProperties) {return new HelloStarter(helloProperties);}}5、自動裝配類被springboot識別的配置文件
在resource目錄下,新建一個META-INF文件夾,在META-INF文件夾下新建一個spring.factories文件。
#聲明配置類的全路徑 org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.yang.HelloAutoConfiguration??
6、使用 mvn?install 打包
?
7、其它項目引入使用
引入:
<dependency><groupId>org.example</groupId><artifactId>yzh-spring-boot-starter</artifactId><version>1.0-SNAPSHOT</version></dependency>?application.properties中的配置:
yzh.hello.name=gouwa代碼:?
@RestController @RequestMapping("/starter") @Slf4j public class StarterController {@Resourceprivate HelloStarter helloStarter;@GetMapping("/index")public String index() {return helloStarter.hello();} }?啟動后,訪問:http://localhost:8080/starter/index
項目GitHub地址:https://github.com/zihea/yzh-spring-boot-starter
總結
以上是生活随笔為你收集整理的手写一个springboot的starter的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序页面跳转方式+跳转小程序(直接
- 下一篇: 简体字与繁体字对照表 “学习繁体字”