javascript
【SpringBoot】自定义starter实现详解
自定義starter實現
- 一、starter概述
- 1.1、這個場景需要使用到的依賴是什么?
- 1.2、如何編寫自動配置?
- 1.3、模式
- 二、代碼編寫
- 2.1、創建工程目錄
- 2.1.1、創建啟動器模塊工程目錄
- 2.1.2、創建自動配置模塊工程目錄
- 2.2、將配置模塊添加到啟動類中
- 2.3、編寫自動配置模塊
- 2.3.1、刪除模塊中多余的內容
- 2.3.2、添加HelloService類
- 2.3.3、添加HelloProperties配置類
- 2.3.4、添加HelloServiceAutoConfiguration自動配置類
- 2.3.5、添加spring.factories文件
- 2.4、將啟動器和自動配置安裝到Maven
- 三、編寫測試項目,測試自定義starter
- 3.1、新建test工程
- 3.2、將自定義starter引入到test工程中
- 3.3、在application.yml配置文件中添加以下配置
- 3.4、編寫測試controller
- 3.5、啟動測試
一、starter概述
1.1、這個場景需要使用到的依賴是什么?
1.2、如何編寫自動配置?
@Configuration //指定這個類是一個配置類 @ConfigurationOnXXX //在指定條件成立的情況下自動配置類生效 @AutoConfigureAfter //指定配置類的順序 @Bean //給Spring容器中添加組件@ConfigurationProperties //結合XXXProperties類來綁定配置 @EnableConfigurationProperties //生效某個配置類,并加入到容器中自動配置類應該如何加載?
需要將啟動就加載的自動配置類,配置在META-INF/spring- factories
1.3、模式
啟動器只用來做依賴導入;
專門寫一個自動配置模塊;
啟動器依賴自動配置,別人只需要引入啟動器(starter)
二、代碼編寫
2.1、創建工程目錄
2.1.1、創建啟動器模塊工程目錄
選擇創建一個空工程。編寫好自己的名稱后,點擊finish。我這邊的工程目錄命名為spring-boot-ftp-starter
按下圖箭頭指示創建一個maven模塊
添加Module相關信息
點擊finish完成啟動器模塊的創建。
2.1.2、創建自動配置模塊工程目錄
再次點擊加號,選擇new module。
2.2、將配置模塊添加到啟動類中
2.3、編寫自動配置模塊
2.3.1、刪除模塊中多余的內容
刪除以下五部分的內容:
- 1.刪除Spring Boot項目的啟動類;
- 2.刪除/resource目錄下的application.properties文件;
- 3.刪除/test目錄下的測試相關文件;
- 4.刪除pom.xml依賴管理中的test依賴;
- 5.刪除pom.xml依賴管理中的打包插件;
2.3.2、添加HelloService類
package com.moss.starter;import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties;/*** @author lwj*/ @Data public class HelloService {@Autowiredprivate HelloProperties helloProperties;public String sayHello(String name) {return helloProperties.getPrefix() + "|" + name + "|" + helloProperties.getSuffix();}}2.3.3、添加HelloProperties配置類
在添加@ConfigurationProperties(prefix = “moss-ftp”)注解的時候,會跳出警告提示,點擊右側的提示,會跳轉到一個Spring的網頁。
這是Idea工具提示我們如果需要添加配置時的提示信息,可以導入下面的這個依賴。
在pom.xml中引入該依賴
2.3.4、添加HelloServiceAutoConfiguration自動配置類
package com.moss.starter;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;@Configuration @ConditionalOnWebApplication @EnableConfigurationProperties(HelloProperties.class) public class HelloServiceAutoConfiguration {@Autowiredpublic HelloProperties helloProperties;@Beanpublic HelloService helloService() {HelloService helloService = new HelloService();helloService.setHelloProperties(helloProperties);return helloService;} }2.3.5、添加spring.factories文件
在這里我們可以參照spring的autoconfigure配置
在本Demo中需要添加的如下:
2.4、將啟動器和自動配置安裝到Maven
點擊右側Maven中兩個模塊下的install指令,將項目安裝到maven工程;
三、編寫測試項目,測試自定義starter
3.1、新建test工程
新建Spring Boot項目
由于之前在自定義starter中配置了@ConditionalOnWebApplication,所以在這里需要勾選添加Spring Web相關的依賴。
3.2、將自定義starter引入到test工程中
在test項目的pom.xml依賴配置中添加自定義starter依賴。
<dependency><groupId>com.moss.starter</groupId><artifactId>moss-ftp-spring-boot-starter</artifactId><version>1.0-SNAPSHOT</version> </dependency>3.3、在application.yml配置文件中添加以下配置
moss-ftp:prefix: Chinasuffix: Hello3.4、編寫測試controller
新建HelloController類
package com.moss.springboot;import com.moss.starter.HelloService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;@RestController public class HelloController {@Autowiredprivate HelloService helloService;@GetMapping("/hello")public String hello() {return helloService.sayHello("李四");} }3.5、啟動測試
啟動項目
打開瀏覽器,在瀏覽器中輸入URL:http://localhost:8080/hello
至此自定義starter已經實現了!!!
總結
以上是生活随笔為你收集整理的【SpringBoot】自定义starter实现详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.2 金融服务
- 下一篇: HTML5 Canvas编写五彩连珠(5