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
- 編寫自己的Webpack LoaderWeb
- 編寫你自己的Python模組Python
- 編寫自己的Babel外掛(一)Babel
- 如何實現自己的Spring Boot StarterSpring Boot
- Spring Boot自動配置原理懂後輕鬆寫一個自己的starterSpring Boot
- 自己編寫的(測試點總結)
- Swift編寫自己的API客戶端SwiftAPI客戶端
- 用Python編寫自己的微型RedisPythonRedis
- 開始編寫自己的技術部落格...
- 為什麼我要編寫自己的UIKitUI
- 建立自己的定製的Spring Boot Starter快速指南Spring Boot
- 編寫自己的Acunetix WVS漏洞指令碼指令碼
- 看完你也想編寫自己的 react 外掛React
- DBA日常維護SQL指令碼_自己編寫的SQL指令碼
- PHP入門教程之編寫自己的PHP框架PHP框架
- 從零開始編寫自己的JavaScript框架(一)JavaScript框架
- 從零開始編寫自己的JavaScript框架(二)JavaScript框架
- 編寫自己的php擴充套件函式 (轉)PHP套件函式
- 自己編寫安裝製作程式 (轉)
- 教你在 C 語言上編寫自己的協程
- 構建自己的React UI元件庫(三):文件編寫ReactUI元件
- 編寫自己的php擴充套件函式(一) (轉)PHP套件函式
- 15_編寫第一個自己的Linux的命令Linux
- 手把手編寫自己的 PHP MVC 框架例項教程PHPMVC框架
- 自己編寫Java Web框架:Takes框架的Web App架構JavaWeb框架APP架構
- Rxjava深入理解之自己動手編寫RxjavaRxJava
- 自己寫的面試題,自己想的答案面試題
- 編寫自己的程式碼庫:CSS3 常用動畫的實現CSSS3動畫
- 編寫自己的程式碼庫(css3常用動畫的實現)CSSS3動畫
- 編寫自己的ClassLoader時設定Thread的contextClassLoaderthreadContext
- 自己編寫JAVA環境下的檔案上傳元件 (轉)Java元件
- 自己寫的加密方式加密
- 用了Redisson的Spring Boot Starter搞的我都想重寫個RedisSpring Boot
- 自己寫歌怎麼編曲?4款超好用編曲軟體推薦
- 編寫自己的程式碼庫(javascript常用例項的實現與封裝)JavaScript封裝