欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

初識Spring Boot框架之Spring Boot的自動配置

 更新時間:2017年04月14日 12:04:11   作者:_江南一點(diǎn)雨  
本篇文章主要介紹了初識Spring Boot框架之Spring Boot的自動配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

在上篇博客初識Spring Boot框架中我們初步見識了SpringBoot的方便之處,很多小伙伴可能也會好奇這個spring Boot是怎么實(shí)現(xiàn)自動配置的,那么今天我就帶小伙伴我們自己來實(shí)現(xiàn)一個簡單的Spring Boot 自動配置的案例,看看這一切到底是怎么發(fā)生的。

假設(shè)我的需求是這樣的:當(dāng)我的項(xiàng)目中存在某個類的時候,系統(tǒng)自動為我配置該類的Bean,同時,我這個Bean的屬性還可以在application.properties中進(jìn)行配置,OK,就這樣一個需求,我們來看看怎么實(shí)現(xiàn)。

1、新建starter的Maven項(xiàng)目

我這里以IntelliJ IDEA創(chuàng)建Project為例,其實(shí)很簡單,創(chuàng)建一個Maven項(xiàng)目,但是注意創(chuàng)建的時候選擇quickstart,步驟如下:

1 

2 

3 

4 

OK,這樣我們就創(chuàng)建好一個Project了。

2.添加依賴

由于我們要使用Spring Boot的自動配置功能,所以在工程創(chuàng)建成功之后首先要添加Spring Boot自身的自動配置作為依賴,如下:

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-autoconfigure</artifactId>
   <version>1.4.2.RELEASE</version>
  </dependency>

3.屬性配置

@ConfigurationProperties(prefix = "hello")
public class HelloServiceProperties {
  private static final String MSG = "world";
  private String msg = MSG;

  public String getMsg() {
    return msg;
  }

  public void setMsg(String msg) {
    this.msg = msg;
  }
}

這里就是一個簡單的類,和上篇博客中我們提到的 類型安全的屬性獲取是一致的,這里屬性的值我們可以在application.properties中來直接設(shè)置,如果不設(shè)置的話默認(rèn)為world。

4.判斷依據(jù)類

public class HelloService {
  private String msg;
  public String sayHello(){
    return "hello " + msg;
  }

  public String getMsg() {
    return msg;
  }

  public void setMsg(String msg) {
    this.msg = msg;
  }
}

我們一會的例子就是根據(jù)這個類是否存在來創(chuàng)建這個類的Bean,當(dāng)然這個類也可以是第三方類庫。

5.自動配置類

@Configuration
@EnableConfigurationProperties(HelloServiceProperties.class)
@ConditionalOnClass(HelloService.class)
@ConditionalOnProperty(prefix = "hello",value = "enable",matchIfMissing = true)
public class HelloServiceAutoConfiguration {
  @Autowired
  private HelloServiceProperties helloServiceProperties;
  @Bean
  public HelloService helloService() {
    HelloService helloService = new HelloService();
    helloService.setMsg(helloServiceProperties.getMsg());
    return helloService;
  }
}

這里@ConditionalOnClass注解主要是用來判斷HelloService這個類在路徑中是否存在,在存在且容器中沒有該類的Bean的情況下系統(tǒng)會自動配置需要的Bean,@ConditionalOnProperty注解則表示指定的屬性要滿足的條件,在helloService方法中我們則使用了HelloServiceProperties提供的參數(shù)。

6.注冊配置

在resources目錄下新建META-INF目錄,然后在META-INF目錄下創(chuàng)建spring.factories文件,文件內(nèi)容如下,表示設(shè)置自動配置類的位置,若有多個配置類用”,”隔開即可。:

復(fù)制代碼 代碼如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.sang.HelloServiceAutoConfiguration

正常情況下我們按步驟一創(chuàng)建出來的Project是沒有resources這個文件夾的,在IntelliJ IDEA這個工具中,我們需要先創(chuàng)建一個directory,然后將之設(shè)置為resources root即可,設(shè)置方式如下:選中resources目錄右鍵單擊–》Mark Directory as–》Resource Root。

7.在項(xiàng)目中使用

OK,經(jīng)過上面幾個步驟我們的自動配置功能就算死寫好了,接下來我們要在自己的項(xiàng)目中來使用它了,正常情況下做好自動配置類之后我們需要將之上傳到 maven 私服上然后直接在項(xiàng)目中引用,也可以將之安裝到本地庫,這里我選擇后者的一個簡化方式,直接創(chuàng)建Module來引用這個自動配置Module(如果小伙伴是用STS或者M(jìn)yEclipse之類的開發(fā)工具直接創(chuàng)建新工程然后添加引用類庫即可)。

創(chuàng)建Module方式很簡單,選中剛才的Project右鍵單擊,New一個Module,這個Module是一個SpringBoot項(xiàng)目(不清楚怎么創(chuàng)建SpringBoot項(xiàng)目可以查看這篇文章初識Spring Boot框架),創(chuàng)建成功之后選擇新建的Module按F4打開Module設(shè)置,然后選擇右邊的加號添加依賴,如下:

這里寫圖片描述

這里寫圖片描述

然后在新建Module的pom.xml文件中添加如下依賴:

<dependency>
      <groupId>org.sang</groupId>
      <artifactId>org.sang.mystarter</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>

實(shí)際上就是我們剛剛創(chuàng)建的自動配置文件的坐標(biāo)。然后新Module的入口類中添加如下代碼:

@Autowired
  private HelloService helloService;

  @RequestMapping("/")
  public String index(){
    return helloService.sayHello();
  }

使用剛剛創(chuàng)建的HelloService,如果需要我們可以在application.properties中添加如下配置:

hello.msg = 賣花擔(dān)上看桃李, 拍酒樓頭聽管弦。

運(yùn)行Module,然后在瀏覽器中訪問,結(jié)果如下:

這里寫圖片描述

OK,這就是一個簡單的自定義自動配置類。

本案例下載地址:本案例GitHub地址

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis簡單resultMap使用詳解

    mybatis簡單resultMap使用詳解

    resultMap是Mybatis最強(qiáng)大的元素,它可以將查詢到的復(fù)雜數(shù)據(jù)(比如查詢到幾個表中數(shù)據(jù))映射到一個結(jié)果集當(dāng)中。這篇文章主要介紹了mybatis簡單resultMap使用詳解的相關(guān)資料,需要的朋友可以參考下
    2021-04-04
  • java設(shè)計模式之觀察者模式

    java設(shè)計模式之觀察者模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計模式之觀察者模式的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Java Runnable線程傳參,實(shí)現(xiàn)讓run訪問參數(shù)

    Java Runnable線程傳參,實(shí)現(xiàn)讓run訪問參數(shù)

    這篇文章主要介紹了Java Runnable線程傳參,實(shí)現(xiàn)讓run訪問參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 詳解Spring Boot 使用Java代碼創(chuàng)建Bean并注冊到Spring中

    詳解Spring Boot 使用Java代碼創(chuàng)建Bean并注冊到Spring中

    本篇介紹了Spring Boot 使用Java代碼創(chuàng)建Bean并注冊到Spring中,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • SpringBoot中FailureAnalyzer的使用詳解

    SpringBoot中FailureAnalyzer的使用詳解

    這篇文章主要介紹了SpringBoot中FailureAnalyzer的使用詳解,FailureAnalyzer攔截啟動時異常,將異常轉(zhuǎn)換成更加易讀的信息并包裝成org.springframework.boot.diagnostics.FailureAnalysis對象,監(jiān)控應(yīng)用啟動過程,需要的朋友可以參考下
    2023-12-12
  • java?使用BeanFactory實(shí)現(xiàn)service與dao層解耦合詳解

    java?使用BeanFactory實(shí)現(xiàn)service與dao層解耦合詳解

    這篇文章主要介紹了java?使用BeanFactory實(shí)現(xiàn)service與dao層解耦合詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java+opencv3.2.0之scharr濾波器

    Java+opencv3.2.0之scharr濾波器

    這篇文章主要為大家詳細(xì)介紹了Java+opencv3.2.0之scharr濾波器的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Gateway如何實(shí)現(xiàn)全局跨域

    Gateway如何實(shí)現(xiàn)全局跨域

    這篇文章主要介紹了Gateway如何實(shí)現(xiàn)全局跨域問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • springboot獲取當(dāng)前用戶信息的三種方式

    springboot獲取當(dāng)前用戶信息的三種方式

    本文詳細(xì)介紹了在開發(fā)中獲取當(dāng)前操作用戶信息的三種方式:使用ThreadLocal存儲用戶信息、通過攔截器和注解結(jié)合Shiro框架獲取用戶信息、以及使用Redis存儲用戶信息,每種方式都有具體的實(shí)現(xiàn)步驟和注意事項(xiàng),可根據(jù)實(shí)際需求選擇合適的方法
    2024-10-10
  • Java多線程(單例模式,堵塞隊(duì)列,定時器)詳解

    Java多線程(單例模式,堵塞隊(duì)列,定時器)詳解

    這篇文章主要介紹了java多線程的(單例模式,堵塞隊(duì)列,定時器),具有一定參考價值,加深多線程編程的理解還是很有幫助的,需要的朋友可以參考下
    2021-08-08

最新評論