開發springboot start
springboot start的核心思想,就是針對spring的一些配置進行約定並封裝,簡化配置流程,方便專案直接引入和使用。
我們在開發場景中,對於一個springboot start 模組,比較粗略的開發認知是:
1、通過application.properties 或application.yaml 檔案配置相關的 屬性
2、在實際業務中,注入 start的 service 方法,直接呼叫使用
如此,自己動手開發一個start的核心流程:
1、建立一個springboot 專案,引入springboot基礎依賴
2、定義一個properties 屬性類,用於其他專案引入時,可以根據配置,處理對應的邏輯
3、一個可供注入的service 類,和具體的實現函式,用於其他專案引入時, 直接注入,呼叫封裝好的業務邏輯
demo的具體實現:
1、建立專案,引入springboot的基礎依賴,其他依賴,可基於業務,自行加入引用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<!--<version>2.2.6.RELEASE</version>-->
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
2、建立可配置的屬性類
/**
* 配置屬性: demo.sayWhat | demo.toWho
*/
@ConfigurationProperties(prefix = "demo")
public class DemoProperties {
/**
* 可以設定預設值,引用方不配置,則使用該預設值,若配置,則覆蓋預設值
*/
private String sayWhat = "hello";
private String toWho;
public String getSayWhat() {
return sayWhat;
}
public void setSayWhat(String sayWhat) {
this.sayWhat = sayWhat;
}
public String getToWho() {
return toWho;
}
public void setToWho(String toWho) {
this.toWho = toWho;
}
}
3、定義一個可注入的server,並實現 業務 say()
public class DemoService {
/**
* 配置的屬性
*/
private DemoProperties demoProperties;
/**
* 構造器
*/
public DemoService(DemoProperties demoProperties) {
this.demoProperties = demoProperties;
}
/**
* 可注入實現的函式
*/
public String say() {
return demoProperties.getSayWhat() + "! " + demoProperties.getToWho();
}
}
3、springboot 裝配 自定義start的核心配置
@Configuration
@EnableConfigurationProperties(DemoProperties.class)
@ConditionalOnProperty(
prefix = "demo",
name = "isopen",
havingValue = "true",
matchIfMissing = true
)
public class DemoConfig {
@Autowired
private DemoProperties demoProperties;
@Bean(name = "demo")
public DemoService demoService(){
return new DemoService(demoProperties);
}
}
4、在專案的resources 目錄 --> META-INF 目錄 --> spring.factories 檔案中,編輯:
#-------starter自動裝配---------
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xxl.xxl.sss.adaf.config.DemoConfig
如此,開發一個 start 已經完成了,
mvn clean install 打包,即可在本地的其他專案中,直接引入
若想上傳到maven 私服,則使用 mvn deploy 命令即可
5、在其他專案中的application.properties 檔案中配置:
demo.sayWhat=你好,很高興認識你
demo.toWho=粗體魚
在service 中注入
@Autowired
DemoServie demoservice
public void test(){
String content = demoservie.say();
System.out.println(content)
// 很高興認識你 ! 粗體魚
}
6、註解說明:(待補充)
@ConfigurationProperties:
@Configuration
@EnableConfigurationProperties(DemoProperties.class)
@ConditionalOnProperty(
prefix = "demo",
name = "isopen",
havingValue = "true",
matchIfMissing = true
)
相關文章
- SpringBoot自動裝配-自定義StartSpring Boot
- SpringBoot Web開發Spring BootWeb
- SpringBoot整合Redis開發Spring BootRedis
- SpringBoot-05-web開發Spring BootWeb
- SpringBoot-05 Web開發Spring BootWeb
- SpringBoot專案開發(一):開篇Spring Boot
- 按下「START」,開始雲遊戲遊戲
- SpringBoot開發自己的@Enable功能Spring Boot
- 使用Docker桌面開發環境功能開發SpringBoot - itnextDocker開發環境Spring Boot
- springboot3+vue3(十一)springboot多環境開發Spring BootVue
- 【SpringBoot學習一】開發入門--快速建立springboot程式Spring Boot
- start uniappAPP
- _002_SpringBoot_SpringBoot四大核心與開發環境Spring Boot開發環境
- 開發利器JRebel部署SpringBoot專案Spring Boot
- SpringBoot配置HTTPS及開發除錯Spring BootHTTP除錯
- 專案實戰介面開發SpringBootSpring Boot
- springboot和ssm開發的區別Spring BootSSM
- springboot 開發學習筆記1Spring Boot筆記
- 【Java】【SpringBoot】logback開發環境配置JavaSpring Boot開發環境
- idea開發之springboot環境搭建IdeaSpring Boot
- SpringBoot整合Redis開發RESTful API介面Spring BootRedisRESTAPI
- Kotlin + SpringBoot + JPA 服務端開發KotlinSpring Boot服務端
- SpringBoot開發祕籍 - 整合Graphql QuerySpring Boot
- springboot開發淺談 2021/05/11Spring Boot
- 在樹莓派上開發SpringBoot 之使用VSCode遠端開發樹莓派Spring BootVSCode
- gf 框架快速開始骨架 gf-start-kit框架
- IDEA開發SpringBoot專案問題集IdeaSpring Boot
- springboot模組化開發專案搭建Spring Boot
- springboot整合redis及其註解式開發Spring BootRedis
- rac中 crsctl start/stop crs and crsctl start/stop cluster 區別
- SpringBoot詳解(三)-Spring Boot的web開發Spring BootWeb
- Springboot 開發過程中遇到坑點 (一)Spring Boot
- SpringBoot優雅開發REST API最佳實踐Spring BootRESTAPI
- SpringBoot 三大開發工具,你都用過麼?Spring Boot
- SpringBoot部落格開發之異常處理Spring Boot
- Java技術分享:SpringBoot多模組開發JavaSpring Boot
- 3.1.5.6 Forcing an Instance to Start
- Windows開始選單欄軟體:DoYourData Start Menu for MacWindowsMac