最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中的自定義starter

 更新時間:2024年01月02日 10:48:01   作者:my_sky_  
這篇文章主要介紹了SpringBoot中的自定義starter,Starter是Spring?Boot中的一個非常重要的概念,Starter相當于模塊,它能將模塊所需的依賴整合起來并對模塊內(nèi)的Bean根據(jù)環(huán)境(條件)進行自動配置,需要的朋友可以參考下

自定義starter

所謂的 starter ,其實就是一個普通的 Maven 項目。

1、首先創(chuàng)建一個普通的 Maven 項目

引入自動化配置依賴:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-autoconfigure</artifactId>
	<version>2.1.8.RELEASE</version>
	<!-- 表明不傳遞spring-boot-autoconfigure依賴 -->
    <optional>true</optional>
</dependency>

注意:在自定義的starter 的pom中,將spring-boot-autoconfigure的maven依賴聲明為<optional>true</optional>,表明自定義的starter的jar包不會傳遞spring-boot-autoconfigure依賴;否則會將spring-boot-autoconfigure版本固定,導致引用自定義starter的應用出現(xiàn)版本沖突問題。

starter命名模式 --> ${module}-spring-boot-starter;

例如:

<groupId>com.hello</groupId>
<artifactId>helloService-spring-boot-starter</artifactId>
<version>0.0.1-SNAPSHOT</version>

2、創(chuàng)建一個配置類

創(chuàng)建一個配置類 HelloProperties 來接受 application.properties 中注入的值:

@ConfigurationProperties(prefix = "javaboy")
public class HelloProperties {
	privatestaticfinal String DEFAULT_NAME = "默認名";
	privatestaticfinal String DEFAULT_MSG = "默認消息";
	private String name = DEFAULT_NAME;
	private String msg = DEFAULT_MSG;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
}

3、創(chuàng)建一個服務類 HelloService

public class HelloService {
	private String msg;
	private String name;
	public String sayHello() {
		return name + " say " + msg + " !";
	}
	public String getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

4、自定義自動配置類

SpringBoot自動裝配的命名規(guī)則:

  • 自動裝配類應命名為:XxxAutoConfiguration;
  • 自動裝配package命名模式: ${root-package}.autoconfigure.${module-package},比如:
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
@Configuration
@EnableConfigurationProperties(HelloProperties.class)
@ConditionalOnClass(HelloService.class)
public class HelloServiceAutoConfiguration {
	@Autowired
	HelloProperties helloProperties;
	@Bean
	HelloService helloService() {
		HelloService helloService = new HelloService();
		helloService.setName(helloProperties.getName());
		helloService.setMsg(helloProperties.getMsg());
		return helloService;
	}
}

注解 @EnableConfigurationProperties 使我們之前配置的 @ConfigurationProperties 生效,讓配置的屬性注入到 Bean 中。

注解 @ConditionalOnClass 表示當項目的 classpath 下存在 HelloService 時,后面的配置才生效。

5、創(chuàng)建 spring.factories 文件

在resources目錄下新建 META-INF/spring.factories 文件:

org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
com.hello.autoconfigure.HelloServiceAutoConfiguration

這里的key是固定的,value是我們的自動配置類的全路徑。

SpringBoot 項目啟動時,會做自動配置,會去掃描所有jar包中的 META-INF/spring.factories 配置文件。

至此,自定義的starter已完成。將這個自動化配置類的項目安裝到maven倉庫中,然后在其他項目中引入依賴就可以使用。

新建一個普通的 Spring Boot 工程,并加入我們自定義的 starter 的依賴:

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

此時我們項目中已有一個 helloService 實例可以使用,而且我們還可以配置它的屬性數(shù)據(jù),例如,在 application.properties 中配置:

javaboy.name=我的名字
javaboy.msg=提示消息

我們做個單元測試:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MystarterApplicationTest {
	@Autowired
	private HelloService helloService;
	@Test
	public void contextLoads() {
		System.out.println(helloService.sayHello());
	}
}

控制臺會打印:

我的名字 say 提示消息 !

到此這篇關(guān)于SpringBoot中的自定義starter的文章就介紹到這了,更多相關(guān)自定義starter內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot?實現(xiàn)流控的操作方法

    SpringBoot?實現(xiàn)流控的操作方法

    本文介紹了限流算法的基本概念和常見的限流算法,包括計數(shù)器算法、漏桶算法和令牌桶算法,還介紹了如何在Spring?Boot中使用Guava庫和自定義注解以及AOP實現(xiàn)接口限流功能,感興趣的朋友一起看看吧
    2024-12-12
  • 詳談Spring框架之事務管理

    詳談Spring框架之事務管理

    下面小編就為大家?guī)硪黄斦凷pring框架之事務管理。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • SpringBoot實現(xiàn)接口防刷的兩種方法

    SpringBoot實現(xiàn)接口防刷的兩種方法

    接口被刷指的是同一接口被頻繁調(diào)用,可能是由于以下原因?qū)е拢簮阂夤艉驼`操作或程序錯誤,本文給大家介紹了SpringBoot實現(xiàn)接口防刷的兩種方法,并有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-06-06
  • 基于Jackson實現(xiàn)API接口數(shù)據(jù)脫敏的示例詳解

    基于Jackson實現(xiàn)API接口數(shù)據(jù)脫敏的示例詳解

    用戶的一些敏感數(shù)據(jù),例如手機號、郵箱、身份證等信息,在數(shù)據(jù)庫以明文存儲,但在接口返回數(shù)據(jù)給瀏覽器(或三方客戶端)時,希望對這些敏感數(shù)據(jù)進行脫敏,所以本文就給大家介紹以惡如何利用Jackson實現(xiàn)API接口數(shù)據(jù)脫敏,需要的朋友可以參考下
    2023-08-08
  • java如何實現(xiàn)數(shù)位分離

    java如何實現(xiàn)數(shù)位分離

    這篇文章主要介紹了java如何實現(xiàn)數(shù)位分離,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java基礎之extends用法詳解及簡單實例

    Java基礎之extends用法詳解及簡單實例

    這篇文章主要介紹了 Java基礎之extends用法詳解及簡單實例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • mybatis-plus查詢方式,部分字段沒有值

    mybatis-plus查詢方式,部分字段沒有值

    這篇文章主要介紹了mybatis-plus查詢方式,部分字段沒有值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • mybatis-plus 關(guān)于savebatch,saveorupdatebatch遇到的坑及解決辦法

    mybatis-plus 關(guān)于savebatch,saveorupdatebatch遇到的坑及解決辦法

    本文主要介紹了mybatis-plus 關(guān)于savebatch,saveorupdatebatch遇到的坑及解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Java中HttpServletRequestWrapper的使用與原理詳解

    Java中HttpServletRequestWrapper的使用與原理詳解

    這篇文章主要介紹了Java中HttpServletRequestWrapper的使用與原理詳解,HttpServletRequestWrapper 實現(xiàn)了 HttpServletRequest 接口,可以讓開發(fā)人員很方便的改造發(fā)送給 Servlet 的請求,需要的朋友可以參考下
    2024-01-01
  • jvm堆外內(nèi)存排查圖文舉例詳解

    jvm堆外內(nèi)存排查圖文舉例詳解

    Java應用程序通過直接方式從操作系統(tǒng)中申請的內(nèi)存,叫堆外內(nèi)存,這篇文章主要給大家介紹了關(guān)于jvm堆外內(nèi)存排查的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12

最新評論

泰顺县| 富宁县| 古交市| 黄石市| 江阴市| 墨竹工卡县| 介休市| 定远县| 乐东| 黔南| 彰武县| 诏安县| 两当县| 金门县| 卫辉市| 夏河县| 荔波县| 偃师市| 敖汉旗| 绥江县| 南安市| 西和县| 湟源县| 敦煌市| 黎川县| 沈阳市| 汉阴县| 买车| 宿松县| 华宁县| 比如县| 辽宁省| 忻城县| 化州市| 辉南县| 台南市| 鸡泽县| 拜泉县| 上饶市| 佛山市| 中山市|