日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot如何實現starter原理詳解

瀏覽:30日期:2023-05-13 13:18:55

1、Mybatis 自定義配置的分析

在我們自定義starter之前我們寫了解一下Mybatis 是如何實現starter

在SpringBoot 引入的依賴如下:

<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.2</version> </dependency>

mybatis的maven 依賴,主要涉及到的內容,spring.factories、MybatisAutoConfiguration、MybatisProperties

SpringBoot如何實現starter原理詳解

我們來看一下 META-INF/spring.factories文件,這個文件是以Map 形式存放的。key是EnableAutoConfiguration類的全類名,

value是一個MybatisAutoConfiguration,這就是當項目啟動自動配置的類。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration

MybatisAutoConfiguration

SpringBoot如何實現starter原理詳解

@Configuration //標示是一個配置類

@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) //表示當SqlSessionFactory,SqlSessionFactoryBean存在這個配置類才生效。

@EnableConfigurationProperties({MybatisProperties.class}):就是把 MybatisProperties加入到 IOC 容器中。

MybatisProperties

SpringBoot如何實現starter原理詳解

對于@ConfigurationProperties注解它的作用就是把全局配置文件中的值綁定到實體類JavaBean上面(將配置文件中的值與MybatisProperties綁定起來),而@EnableConfigurationProperties主要是把以綁定值JavaBean加入到spring容器中。

分析完這些規則后,我們再來看看mybatis自定義的starter 的項目結構,主要是分為兩個項目(一個是空項目(mtbatis-spring-boot-starter),一個是具體的實現自定義配置的項目(mybatis-spring-boot-autoconfigure)),空項目只是引入自定義配置項目的依賴,而實現映入的時候我們只需要映入空項(mtbatis-spring-boot-starter)即可。

到此我們已經分析完mybatis 自定義的starter,下面我們自己來實現一個自定義的starter。

2、自定義starter的實現

項目結構展示:

SpringBoot如何實現starter原理詳解

首先我們先定義一個 zfauto-spring-boot-autoconfigure 工程

編寫屬性類:添加 @ConfigurationProperties注解和前綴 zf.auto。之后我們就可以在 application.properties或application.yml 中 使用 zf.auto=指定參數了,由于篇幅的原因省略setter getter方法,實際是需要的,不然無法注入;

@ConfigurationProperties(prefix = 'zf.auto')public class HelloProperties { private String prefix; private String suffix;}

編寫配置類:加入@Configuration注解,@ConditionalOnWebApplication是web 應用配置類才起作用,以及 @EnableConfigurationProperties(HelloProperties.class) 注解,將屬性注入到 IOC 容器中。

@Configuration@ConditionalOnWebApplication@EnableConfigurationProperties(HelloProperties.class)public class HelloServiceAutoConfiguration { @Autowired HelloProperties helloProperties; @Bean public HelloService helloService(){ HelloService helloService=new HelloService(); helloService.setHelloProperties(helloProperties); return helloService; }}

編寫 spring.factories 文件:在resources路徑下面創建META-INF,文件夾,然后創建spring.factories文件

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.zfauto.starter.HelloServiceAutoConfiguration

然后我們在創建一個空項目(zfauto-spring-boot-starter),在這個項目中我們引入zfauto-spring-boot-autoconfigure依賴

<dependency> <groupId>com.zfauto.starter</groupId> <artifactId>zfauto-spring-boot-autoconfigure</artifactId> <version>0.0.1-SNAPSHOT</version></dependency>

HelloService 實現的功能,省略setter,getter的方法(實際需要)

public class HelloService { HelloProperties helloProperties; public String sayHello(String name){ return helloProperties.getPrefix()+ ','+name+','+helloProperties.getSuffix(); }}

最后我們 分別將項目打包,由于zfauto-spring-boot-starter是依賴于zfauto-spring-boot-autoconfigure,所以我們先對zfauto-spring-boot-autoconfigure進行打包,然后通過 mvn install 打到本地倉庫(如何打包見下圖)。

SpringBoot如何實現starter原理詳解

到此我們自定義的類實現。那我們來測試一下,這個和我們引入其他的starter一樣了。

創建項目zfauto-spring-boot-starter-test ,引入自定義starter的依賴。

<dependency> <groupId>com.zfauto.starter</groupId> <artifactId>zfauto-spring-boot-starter</artifactId> <version>0.0.1-SNAPSHOT</version></dependency>

application.properties中的配置如下

zf.auto.prefix=hello

zf.auto.suffix=123

具體的測試類

@RestControllerpublic class HelloController { @Autowired HelloService helloService; @RequestMapping('/sayHello') public String sayHello(){ return helloService.sayHello('小福子'); }}

項目訪問路徑:http://localhost:8080/sayHello

SpringBoot如何實現starter原理詳解

好了 ,本文就說到這里,本文相關案例我已經上傳到 碼云 ,小伙伴們可以自行下載:https://gitee.com/xiaofuzi123/springboot-learning-example

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99久久精品费精品国产| 亚洲精品第一| 9色精品在线| 免费污视频在线一区| 毛片不卡一区二区| 国产亚洲精aa在线看| 日韩欧美中文字幕在线视频| 亚洲精品国产偷自在线观看| 亚洲一区二区三区四区五区午夜| 日韩伦理福利| 国产精品久久久久久av公交车| 喷白浆一区二区| 亚洲免费婷婷| 亚洲一区久久| 国产精品亚洲欧美一级在线| 欧美在线首页| 黄色日韩在线| 亚洲免费影视| 激情久久五月| 国产一区日韩欧美| 美女视频黄 久久| 国产中文字幕一区二区三区| 日韩中文字幕一区二区高清99| 日韩高清二区| 欧美精品三级在线| 国产美女亚洲精品7777| 91在线成人| 天堂√中文最新版在线| 精品一区毛片| 爽爽淫人综合网网站| 国产精成人品2018| 高清在线一区| 九九久久婷婷| 国产精品久久久久久久免费软件| 麻豆一区二区三| 精品一区电影| 国产999精品在线观看| 亚洲成人av观看| 图片区亚洲欧美小说区| 亚洲欧美专区| 欧美国产另类| 蜜桃视频在线网站| 国产亚洲综合精品| 国产一区二区三区探花| 日韩欧美一区二区三区在线视频| 另类激情亚洲| 国产精品一区二区三区四区在线观看 | 久久男人av| 久久蜜桃资源一区二区老牛| 日本天堂一区| 精品捆绑调教一区二区三区| 日韩视频一区| 精品国产网站| 国产视频一区在线观看一区免费| 日韩欧美美女在线观看| 成人亚洲欧美| 免费在线视频一区| 国产欧美日韩精品高清二区综合区 | 精品久久久亚洲| 伊人精品一区| 91精品麻豆| 日韩在线欧美| 国产精品久久久久久久久久久久久久久 | 视频在线观看91| 国产欧美一区二区三区精品观看| 国产一区二区三区探花| 日韩成人午夜精品| 国产中文在线播放| 亚洲一区二区三区中文字幕在线观看| 麻豆国产精品777777在线| 久久久久久久久久久妇女| 天堂久久av| 日韩高清中文字幕一区二区| 国产乱子精品一区二区在线观看| 亚洲一级少妇| 91成人福利| 久久精品青草| 视频一区二区不卡| 精品国产欧美日韩| 免费观看在线色综合| 偷拍精品精品一区二区三区| 久久激情综合网| 亚洲一区免费| 亚洲精品电影| 精品中国亚洲| 国产毛片一区| 亚洲一区成人| 国产v综合v| 亚洲欧洲美洲av| 国产精品成人自拍| 蜜臀av亚洲一区中文字幕| 98精品久久久久久久| 日韩av中文在线观看| 在线成人动漫av| 国产精品magnet| 国产精品亚洲人成在99www| 亚洲欧美日韩在线观看a三区| 欧美丰满日韩| 福利片在线一区二区 | 精品国产不卡一区二区| 热久久免费视频| 亚洲精一区二区三区| 久久国产日韩| 91视频一区| 日韩免费福利视频| 国产成人免费| 老司机精品视频网| 国产精品啊啊啊| 日韩国产精品久久久久久亚洲| 久热综合在线亚洲精品| 亚洲香蕉网站| 久久久久一区| 日韩亚洲在线| 999精品色在线播放| 日韩激情视频网站| 日本强好片久久久久久aaa| 蜜桃久久精品一区二区| 蜜桃视频第一区免费观看| 国产一区91| 日韩一区精品| 激情偷拍久久| 久久激情婷婷| 伊人国产精品| 综合亚洲色图| 国产极品久久久久久久久波多结野 | 色8久久久久| 亚洲午夜久久| 亚洲精品日韩久久| 国产视频一区欧美| 日韩有码av| 日本午夜精品久久久久| 日韩成人午夜精品| 久久激情五月婷婷| 国产精品激情| 久久亚洲不卡| 欧美a级片一区| 视频一区在线播放| 欧美激情视频一区二区三区免费 | 91精品福利观看| 欧美精品aa| 亚洲天堂1区| 日韩专区视频网站| 98精品久久久久久久| 影院欧美亚洲| 国产精品hd| 99视频精品免费观看| 91精品美女| 欧美日一区二区| 日本aⅴ精品一区二区三区| 国产精品一区二区三区四区在线观看| 91精品xxx在线观看| 国产模特精品视频久久久久| 国产精品毛片久久久| 亚洲电影在线| 国产精品久久久久久久免费软件| 久久久久一区| 国产精品亚洲欧美日韩一区在线| 日韩一区二区在线免费| 一区二区三区国产在线| 国产中文欧美日韩在线| 在线综合亚洲| 久久只有精品| 丝袜美腿亚洲一区二区图片| 青草国产精品| 日韩欧美精品| 国产日产一区| 欧美va天堂在线| 精品中国亚洲| 亚洲精品动态| 91成人精品| 日本一区二区高清不卡| 日韩在线黄色| 激情五月色综合国产精品| 国产精品久久久久av蜜臀 | 不卡在线一区| 久久中文精品| 日韩1区2区3区| 女同性一区二区三区人了人一| 日韩成人av影视| 亚洲在线免费| 亚洲v在线看| 国产成人a视频高清在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产91精品对白在线播放| 精品视频自拍| 欧美在线不卡| 国产精品婷婷| 一区二区三区视频免费观看| 日本久久综合| 欧美成人精品一级| 91嫩草精品| 日韩黄色在线观看| 国产精品婷婷| 日韩欧美一区二区三区免费看| 麻豆精品少妇| 国产精品嫩模av在线| 最新国产精品| 久久xxxx| 免费国产自线拍一欧美视频| 蜜桃视频欧美|