spring-boot - 編寫自己的starter
世界上並沒有完美的程式,但是我們並不因此而沮喪,因為寫程式就是一個不斷追求完美的過程。
首先注意一下spring-boot-starter的命名規則,
一般spring-boot內部自帶的starter命名格式為:
spring-boot-starter-*
而自定義的spring-boot的starter命名規則為:
*-spring-boot-starter
編寫自己starter的過程如下
1.建立一個空的maven專案
<?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>my-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
2.指定Java版本
<properties>
<java.version>1.8</java.version>
</properties>
3.引入spring-boot依賴版本管理
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
4.引入自定義starter需要的依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
</dependencies>
5.開發AutoConfig類
@Configuration
public class MyAutoConfig {
}
6.在配置檔案/resources/META-INF/spring.factories中指定AutoConfig類
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.hou.config.MyAutoConfig
7.編寫配置類實體
@ConfigurationProperties(prefix = "my.com")
public class MyConfigEntity {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
8.在AutoConfig類中引入配置類實體
@Configuration
@EnableConfigurationProperties(MyConfigEntity.class)
public class MyAutoConfig {
}
9.編寫Bean實體
public class MyBean {
private String name;
private String age;
public MyBean () {}
public MyBean (String name, String age) {
this.name = name;
this.age = age;
}
public String getName () {
return name;
}
public String getAge () {
return age;
}
}
10.在AutoConfig類中將Bean實體配置為Bean
@Configuration
@EnableConfigurationProperties(MyConfigEntity.class)
public class MyAutoConfig {
@Bean
public MyBean myBean (MyConfigEntity myConfigEntity) {
String name = myConfigEntity.getName();
String age = myConfigEntity.getAge();
return new MyBean(name, age);
}
}
通過以上過程,一個基本的starter就編寫完成了,如果將他引入到其他spring-boot專案中就可以使用了
<dependency>
<groupId>org.example</groupId>
<artifactId>my-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
這是使用時spring-boot專案application.yml的配置
my:
com:
name: houbw
age: 18
這是執行示例
@SpringBootTest
class UserStarterApplicationTests {
@Autowired
MyBean myBean;
@Test
void contextLoads() {
String name = myBean.getName();
String age = myBean.getAge();
assert "houbw".equals(name);
assert "18".equals(age);
}
}
結果執行通過
通過以上過程,可以推斷出,spring-boot專案在執行SpringApplication.run(UserStarterApplication.class, args);啟動時,首先會根據META-INF/spring.factories中EnableAutoConfiguration指定的配置類載入需要的配置資訊及初始化自定義的Bean,在啟動完成後,我們就可以通過自動注入的形式來獲取Bean例項並使用,並且能夠獲取到事先配置好的資料。
關注公眾號
相關文章
- 【spring-boot】自定義starterSpringboot
- 如何建立自己的Spring Boot Starter併為其編寫單元測試Spring Boot
- 編寫自己的 TypeScript CLITypeScript
- 如何實現自己的Spring Boot StarterSpring Boot
- 編寫自己的Babel外掛(一)Babel
- 用Python編寫自己的微型RedisPythonRedis
- 編寫你自己的Python模組Python
- Spring Boot自動配置原理懂後輕鬆寫一個自己的starterSpring Boot
- 編寫自己的Acunetix WVS漏洞指令碼指令碼
- 自己編寫的(測試點總結)
- 建立自己的定製的Spring Boot Starter快速指南Spring Boot
- 開始編寫自己的技術部落格...
- DBA日常維護SQL指令碼_自己編寫的SQL指令碼
- 看完你也想編寫自己的 react 外掛React
- 15_編寫第一個自己的Linux的命令Linux
- 構建自己的React UI元件庫(三):文件編寫ReactUI元件
- 教你在 C 語言上編寫自己的協程
- Rxjava深入理解之自己動手編寫RxjavaRxJava
- 用了Redisson的Spring Boot Starter搞的我都想重寫個RedisSpring Boot
- 自己寫的面試題,自己想的答案面試題
- 自己寫歌怎麼編曲?4款超好用編曲軟體推薦
- Android編譯期插樁,讓程式自己寫程式碼(一)Android編譯
- Android編譯期插樁,讓程式自己寫程式碼(二)Android編譯
- [譯] 用 Go 編寫你自己的區塊鏈挖礦演算法!Go區塊鏈演算法
- 開源自己編寫的半人工標註平臺PaddleOCRLabel(.NET Winform版本)ORM
- 寫給自己的規劃
- 寫給 35 歲的自己!
- 寫給未來的自己
- 自己寫的fabric指令碼指令碼
- 三分鐘實戰手寫Spring Boot StarterSpring Boot
- [譯] 用不到 200 行的 GO 語言編寫您自己的區塊鏈Go區塊鏈
- 用自己寫的rms引擎寫的電話本
- 使用Vue 3編寫個人部落格前臺!去除第三方UI!自己編寫所需UI元件!VueUI元件
- Layout的編寫
- 來學著寫自己的“jQuery”jQuery
- 手寫一個自己的PromisePromise
- 寫給自己看的找素材
- 如果你想寫自己的Benchmark框架框架