網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
starter 是什么 ?
- 日常開(kāi)發(fā)中,開(kāi)發(fā)者可以封裝屬于自己框架的 starter,可以實(shí)現(xiàn)自動(dòng)配置,可以設(shè)定有哪些配置屬性,通過(guò)屬性去控制 starter 的使用,就像使用集成 spring-boot 的 starter
- starter 是可插拔插件,和 jar 包的區(qū)別是 starter 能實(shí)現(xiàn)自動(dòng)配置,能夠大幅提升開(kāi)發(fā)效率
常用的 starter
如何 創(chuàng)建自定義 和 使用 starter ?
- 創(chuàng)建 starter 步驟
- 新建 springboot 項(xiàng)目
- 引入 spring-boot-autoconfigure 依賴(lài)
- 編寫(xiě)屬性源及自動(dòng)配置類(lèi)
- 通過(guò) @Configuration 注解標(biāo)注配置類(lèi),通過(guò) @Bean 標(biāo)注方法返回的對(duì)象
- 創(chuàng)建一個(gè)配置文件,并且通過(guò) @EnableConfigurationProperties() 使配置文件生效
- 通過(guò) @ConditionalOnProperty() 注解指定配置文件的屬性,某個(gè)屬性為某個(gè)值就自動(dòng)將 bean 對(duì)象注入到 spring 容器中
- 在 spring.factories 中添加自動(dòng)配置實(shí)現(xiàn)類(lèi)
- maven 打包,讓其他工程可依賴(lài)
- 使用 starter 步驟
- pom.xml 中引入 starter
- 屬性文件中配置屬性
- 類(lèi)中引用服務(wù),調(diào)用服務(wù)能力
starter 的實(shí)現(xiàn)原理
- 通過(guò) @EnableAutoConfiguration 注解注入 bean 的流程
- 啟動(dòng)類(lèi) @SpringBootApplication
- 引入 AutoConfigurationImportSelector
- ImportSelector 的 selectImport 方法返回 String[] 數(shù)組
- ConfigurationClassParser 中處理
- 獲取 spring.factories 中 EnableAutoConfiguration 的實(shí)現(xiàn)
- @ConditionalOnProperties 注解注入 bean 原理
- @ConditionalOnProperty() 方式注入 bean 對(duì)象
- OnPropertyCondition,繼承 SpringBootCondition 實(shí)現(xiàn) Condition 接口
- ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) 方法
- 遍歷注解屬性判斷 environment 中是否含有并且值一直
- 返回對(duì)比結(jié)果,Condition 的 matches() 方法返回 true,就注入到 spring 容器中
原文鏈接:https://blog.csdn.net/qq_41956014/article/details/126560650
相關(guān)推薦
- 2022-08-04 docker搭建fastdfs環(huán)境的方法步驟_docker
- 2022-01-08 React項(xiàng)目創(chuàng)建報(bào)錯(cuò)解決方案npm ERR! code 1 npm ERR! path E:\No
- 2023-11-16 RuntimeError: Expected object of device type cuda
- 2022-09-01 C++?OpenCV實(shí)戰(zhàn)之形狀識(shí)別_C 語(yǔ)言
- 2023-02-27 python定時(shí)任務(wù)sched庫(kù)用法簡(jiǎn)單實(shí)例_python
- 2022-12-23 python如何獲取文件當(dāng)前位置和定位某個(gè)位置_python
- 2023-07-26 TypeScript中的模塊與命名空間
- 2022-10-09 .NET擴(kuò)展方法使用實(shí)例詳解_實(shí)用技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支