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

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

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

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

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

1、新建starter的Maven項目

我這里以IntelliJ IDEA創(chuàng)建Project為例,其實很簡單,創(chuàng)建一個Maven項目,但是注意創(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中來直接設置,如果不設置的話默認為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,當然這個類也可以是第三方類庫。

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)容如下,表示設置自動配置類的位置,若有多個配置類用”,”隔開即可。:

復制代碼 代碼如下:

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

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

7.在項目中使用

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

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

這里寫圖片描述

這里寫圖片描述

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

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

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

@Autowired
  private HelloService helloService;

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

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

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

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

這里寫圖片描述

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

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

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

相關文章

  • SpringBoot集成RabbitMQ實現(xiàn)用戶注冊的示例代碼

    SpringBoot集成RabbitMQ實現(xiàn)用戶注冊的示例代碼

    這篇文章主要介紹了SpringBoot集成RabbitMQ實現(xiàn)用戶注冊的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Java實現(xiàn)批量下載文件的示例代碼

    Java實現(xiàn)批量下載文件的示例代碼

    這篇文章主要為大家詳細介紹了Java如何實現(xiàn)批量下載文件,并以壓縮輸出流的形式返回前端,文中的示例代碼講解詳細,需要的小伙伴可以參考一下
    2023-10-10
  • Java管道流實現(xiàn)線程間通信過程解析

    Java管道流實現(xiàn)線程間通信過程解析

    這篇文章主要介紹了Java管道流實現(xiàn)線程間通信過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot集成ShedLock實現(xiàn)分布式定時任務的示例代碼

    SpringBoot集成ShedLock實現(xiàn)分布式定時任務的示例代碼

    ShedLock 是一個 Java 庫,通常用于分布式系統(tǒng)中,確保定時任務(Scheduled Tasks)在集群環(huán)境下只被某一個實例執(zhí)行一次,本文給大家介紹了SpringBoot集成ShedLock實現(xiàn)分布式定時任務的示例代碼,需要的朋友可以參考下
    2024-12-12
  • Java Socket實現(xiàn)聊天室附1500行源代碼

    Java Socket實現(xiàn)聊天室附1500行源代碼

    Socket是應用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。本篇文章手把手帶你通過Java Socket來實現(xiàn)自己的聊天室,大家可以在過程中查缺補漏,溫故而知新
    2021-10-10
  • SpringBoot項目執(zhí)行腳本 自動拉取最新代碼并重啟的實例內(nèi)容

    SpringBoot項目執(zhí)行腳本 自動拉取最新代碼并重啟的實例內(nèi)容

    在本篇文章里小編給大家整理的是一篇關于SpringBoot項目執(zhí)行腳本 自動拉取最新代碼并重啟的實例內(nèi)容,有需要的朋友們參考下。
    2019-12-12
  • springboot之聯(lián)表查詢方式

    springboot之聯(lián)表查詢方式

    這篇文章主要介紹了springboot之聯(lián)表查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • springboot項目攔截器重定向循環(huán)問題的解決

    springboot項目攔截器重定向循環(huán)問題的解決

    這篇文章主要介紹了springboot項目攔截器重定向循環(huán)問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java設計模式之工廠方法模式

    java設計模式之工廠方法模式

    這篇文章主要為大家詳細介紹了java設計模式之工廠方法模式,什么是java工廠方法模式,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Java將List轉(zhuǎn)換為String的幾種方式

    Java將List轉(zhuǎn)換為String的幾種方式

    我們大家在實際開發(fā)中經(jīng)常遇到List轉(zhuǎn)為String字符串的情況,下面這篇文章主要給大家介紹了關于Java將List轉(zhuǎn)換為String的幾種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05

最新評論

封开县| 汾西县| 韩城市| 抚州市| 左权县| 花莲县| 青田县| 永寿县| 积石山| 建湖县| 屏边| 永定县| 利川市| 滕州市| 萍乡市| 五大连池市| 攀枝花市| 胶州市| 松阳县| 双牌县| 左云县| 闽清县| 毕节市| 广宁县| 射洪县| 定西市| 通许县| 鹤庆县| 河南省| 青铜峡市| 湖口县| 金溪县| 宁晋县| 江城| 探索| 元阳县| 高陵县| 德格县| 泗水县| 枣庄市| 体育|