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

Spring Boot 自定義starter的示例代碼

 更新時間:2018年11月22日 13:57:58   作者:一花一四季,一夢一世界  
這篇文章主要介紹了Spring Boot 自定義starter的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

SpringBoot 個人感覺特點:

1)眾多庫的集合(各種Starter),方便快速構(gòu)建應(yīng)用系統(tǒng)。

2)自動配置spring(通過AutoConfiguration機(jī)制),簡化配置,也方便擴(kuò)展新的Starter。

3)內(nèi)嵌web容器,無需WAR部署。

創(chuàng)建一個用maven構(gòu)建的springboot項目

pom文件配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.xjw.springboot</groupId>
  <artifactId>hellostarter</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>hello-spring-boot-starter</name>
  <description>測試自定義starter</description>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>


</project>

定義一個pojo用來接收properties中配置的信息

package com.xjw;                                                     
                                                             
import org.springframework.boot.context.properties.ConfigurationProperties;                        
                                                             
@ConfigurationProperties(prefix = "hello")                                        
public class HelloServiceProperteis {                                           
                                                             
  private String msg;                                                  
                                                             
  public String getMsg() {                                               
    return msg;                                                    
  }                                                           
                                                             
  public void setMsg(String msg) {                                           
    this.msg = msg;                                                  
  }                                                           
                                                             
}

@ConfigurationProperties:用來標(biāo)識這個pojo是一個用來接收指定前綴的資源配置值

prefix:表示在配置文件中配置項前綴[/code]

編寫一個Service用來對外提供服務(wù)

package com.xjw;

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;
  }

}

配置一個pojo用來讀取上面配置的HelloServiceProperteis

package com.xjw;                                                              
                                                                      
import org.springframework.beans.factory.annotation.Autowired;                                       
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;                                 
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;                              
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;                               
import org.springframework.boot.context.properties.EnableConfigurationProperties;                              
import org.springframework.context.annotation.Bean;                                             
import org.springframework.context.annotation.Configuration;                                        
                                                                      
@Configuration                                                               
@EnableConfigurationProperties(value = HelloServiceProperteis.class)                                    
@ConditionalOnClass(HelloService.class)                                                   
@ConditionalOnProperty(prefix = "hello", value = "enable", matchIfMissing = true)                              
public class HelloAutoConfiguration {                                                    
                                                                      
  @Autowired                                                               
  private HelloServiceProperteis helloServiceProperteis;                                         
                                                                      
  @Bean                                                                  
  @ConditionalOnMissingBean(HelloService.class)                                              
  public HelloService helloService() {                                                  
    HelloService helloService = new HelloService();                                           
    helloService.setMsg(helloServiceProperteis.getMsg());                                        
    return helloService;                                                        
  }                                                                    
}

@Configuration:標(biāo)識此類為一個spring配置類

@EnableConfigurationProperties(value = HelloServiceProperteis.class):啟動配置文件,value用來指定我們要啟用的配置類,可以有多個,多個時我們可以這么寫value={xxProperties1.class,xxProperteis2.class....}

@ConditionalOnClass(HelloService.class):表示當(dāng)classPath下存在HelloService.class文件時改配置文件類才有效

@ConditionalOnProperty(prefix = "hello", value = "enable", matchIfMissing = true):表示只有我們的配置文件是否配置了以hello為前綴的資源項值,并且在該資源項值為enable,如果沒有配置我們默認(rèn)設(shè)置為enable[/code]

最后在src/main/resources 文件夾下新建文件夾 META-INF,在新建的META-INF文件夾下新建spring.factories

在新建的spring.factories文件中配置自動啟動類為我們之前編寫的HelloAutoConfiguration 類

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.xjw.HelloAutoConfiguration

然后就可以在其他的spring-boot項目中使用我們剛剛新建的starter了,我們來測試一下

在新建一個spring-boot項目,pom.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.xjw.springboot</groupId>
  <artifactId>hellostarter.test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>hello-spring-boot-starter-test</name>
  <description>測試自定義starter</description>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.xjw.springboot</groupId>
      <artifactId>hellostarter</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>


</project>

然后我們直接在咋們的啟動類中中嘗試使用以下我們上面定義的starter提供的HelloService:

package com.xjw;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class HelloSpringBootStarterTestApplication {

  @Autowired
  private HelloService helloService;

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

  public static void main(String[] args) {
    SpringApplication.run(HelloSpringBootStarterTestApplication.class, args);
  }
}

接著我們修改測試項目中的application.properteis,加入如下配置:

debug=true
server.port=8888

#hello=enable
hello.msg=測試starter

最后啟動項目,觀察控制臺輸出的內(nèi)容中依賴的starter,從Positive matches下我們可以看到有這么一句:

HelloAutoConfiguration matched:
- @ConditionalOnClass found required class 'com.xjw.HelloService'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)
- @ConditionalOnProperty (hello.enable) matched (OnPropertyCondition)

或者我們打開項目依賴樹也能找到我們的starter ,這說明spring已經(jīng)自動的啟動了我們的starter了,打開瀏覽器輸入地址:http://localhost:8888/將會看到如下結(jié)果

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

相關(guān)文章

  • MyBatis中criteria的or(或查詢)語法說明

    MyBatis中criteria的or(或查詢)語法說明

    這篇文章主要介紹了MyBatis中criteria的or(或查詢)語法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java中使用MyBatis-Plus操作數(shù)據(jù)庫的實例

    Java中使用MyBatis-Plus操作數(shù)據(jù)庫的實例

    本文主要介紹了Java中使用MyBatis-Plus操作數(shù)據(jù)庫的實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • Java將時間按月份分段的實現(xiàn)思路與方法

    Java將時間按月份分段的實現(xiàn)思路與方法

    這篇文章主要給大家介紹了關(guān)于Java將時間按月份分段的實現(xiàn)思路與方法,通過文中介紹的方法可以將時間分成我們想要的時間段,文中給出了詳細(xì)的實例代碼,需要的朋友可以參考下
    2021-07-07
  • 淺析java快速排序算法

    淺析java快速排序算法

    這篇文章主要介紹了淺析java快速排序算法,需要的朋友可以參考下
    2015-02-02
  • 教你利用JAVA實現(xiàn)可以自行關(guān)閉服務(wù)器的方法

    教你利用JAVA實現(xiàn)可以自行關(guān)閉服務(wù)器的方法

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著利用JAVA實現(xiàn)可以自行關(guān)閉服務(wù)器的方法展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • String與Blob互轉(zhuǎn)和file文件與Blob互轉(zhuǎn)方式

    String與Blob互轉(zhuǎn)和file文件與Blob互轉(zhuǎn)方式

    這篇文章主要介紹了String與Blob互轉(zhuǎn)和file文件與Blob互轉(zhuǎn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java(包括springboot)讀取resources下文件方式實現(xiàn)

    java(包括springboot)讀取resources下文件方式實現(xiàn)

    這篇文章主要介紹了java(包括springboot)讀取resources下文件方式實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 關(guān)于SpringCloud的Bus消息總線圖文詳解

    關(guān)于SpringCloud的Bus消息總線圖文詳解

    這篇文章主要介紹了關(guān)于SpringCloud的Bus消息總線圖文詳解,Spring Cloud Bus是用來將分布式系統(tǒng)的節(jié)點與輕量級消息系統(tǒng)鏈接起來的框架,它整合了Java的事件處理機(jī)制和消息中間件的功能,需要的朋友可以參考下
    2023-05-05
  • java使用SFTP上傳文件到資源服務(wù)器

    java使用SFTP上傳文件到資源服務(wù)器

    這篇文章主要介紹了java使用SFTP上傳文件到資源服務(wù)器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • mybatis?實現(xiàn)多層級collection嵌套

    mybatis?實現(xiàn)多層級collection嵌套

    這篇文章主要介紹了mybatis?實現(xiàn)多層級collection嵌套,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論