日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

SpringBoot 實(shí)現(xiàn)自定義的 starter

作者:tytler 更新時(shí)間: 2022-08-28 編程語(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

請(qǐng)?zhí)砑訄D片描述

如何 創(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

欄目分類(lèi)
最近更新