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

SpringBoot中的自定義starter詳解

 更新時間:2024年01月27日 10:54:11   作者:魅Lemon  
這篇文章主要介紹了SpringBoot中的自定義starter詳解,SpringBoot中的starter是一種非常重要的機(jī)制,能夠拋棄以前繁雜的配置,將其統(tǒng)一集成進(jìn)starter,需要的朋友可以參考下

一、starter簡介

1、SpringBoot starter機(jī)制

SpringBoot中的starter是一種非常重要的機(jī)制,能夠拋棄以前繁雜的配置,將其統(tǒng)一集成進(jìn)starter,應(yīng)用者只需要在maven中引入starter依賴,SpringBoot就能自動掃描到要加載的信息并啟動相應(yīng)的默認(rèn)配置。starter讓我們擺脫了各種依賴庫的處理,需要配置各種信息的困擾。SpringBoot會自動通過classpath路徑下的類發(fā)現(xiàn)需要的Bean,并注冊進(jìn)IOC容器。SpringBoot提供了針對日常企業(yè)應(yīng)用研發(fā)各種場景的spring-boot-starter依賴模塊。所有這些依賴模塊都遵循著約定成俗的默認(rèn)配置,并允許我們調(diào)整這些配置,即遵循“約定大于配置”的理念。

2、為什么要自定義starter

在我們的日常開發(fā)工作中,經(jīng)常會有一些獨立于業(yè)務(wù)之外的配置模塊,我們經(jīng)常將其放到一個特定的包下,然后如果另一個工程需要復(fù)用這塊功能的時候,需要將代碼硬拷貝到另一個工程,重新集成一遍,麻煩至極。如果我們將這些可獨立于業(yè)務(wù)代碼之外的功配置模塊封裝成一個個starter,復(fù)用的時候只需要將其在pom中引用依賴即可。

3、自定義starter命名規(guī)范

官方命名:

  • 前綴:spring-boot-starter-xxx
  • 比如:spring-boot-starter-web…

自定義命名:

  • xxx-spring-boot-starter
  • 比如:mybatis-spring-boot-starter

二、starter實現(xiàn)

1、新建工程

這里我命名為shawn-spring-boot-starter

在這里插入圖片描述

2、添加pom.xml依賴

這里需要注意spring版本,太高可能會導(dǎo)致install失敗

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.shawn</groupId>
    <artifactId>shawn-spring-boot-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>shawn-spring-boot-starter</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
</project>

3、定義一個實體類映射配置信息

@ConfigurationProperties(prefix = "shawn.hello")它可以把相同前綴的配置信息通過配置項名稱映射成實體類,可以直接在yml文件進(jìn)行配置

// 前綴 shawn.hello
@ConfigurationProperties(prefix = "shawn.hello")
public class ShawnProperties {
    /**
     * 前綴
     */
    private String prefix;
    /**
     * 后綴
     */
    private String suffix;
    public String getPrefix() {
        return prefix;
    }
    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }
    public String getSuffix() {
        return suffix;
    }
    public void setSuffix(String suffix) {
        this.suffix = suffix;
    }
}

4、編寫自己的服務(wù)

public class ShawnService {
    ShawnProperties ShawnProperties;
    public ShawnProperties getShawnProperties() {
        return ShawnProperties;
    }
    public void setShawnProperties(ShawnProperties ShawnProperties) {
        this.ShawnProperties = ShawnProperties;
    }
    public String sayHello(String name){
        return ShawnProperties.getPrefix() + name + ShawnProperties.getSuffix();
    }
}

5、定義配置類

這里,我們將ShawnService類定義為一個Bean,交給Ioc容器。 @Configuration 配置注解 @EnableConfigurationProperties。該注解是用來開啟對@ConfigurationProperties 注解配置Bean的支持。當(dāng)然了,也可以在 @ConfigurationProperties 注解的類上添加 @Configuration 或者 @Component注解

@Configuration
@ConditionalOnWebApplication //web應(yīng)用生效
@EnableConfigurationProperties(ShawnProperties.class)
public class ShawnServiceAutoConfiguration {
    @Autowired
    ShawnProperties shawnProperties;
    @Bean
    public ShawnService shawnService(){
        ShawnService service = new ShawnService();
        service.setShawnProperties(shawnProperties);
        return service;
    }
}

6、在resources編寫一個自己的 META-INF\spring.factories

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.shawn.ShawnServiceAutoConfiguration

7、打包到Maven倉庫

在這里插入圖片描述

三、測試starter

1、新建項目,引入依賴

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

2、編寫測試類

@RestController
public class ShawnCOntroller {
    @Autowired
    ShawnService shawnService;
    @GetMapping("/hello")
    public String hello(){
        return shawnService.sayHello("shawn");
    } 
}

3、配置

在application.yml中進(jìn)行配置

shawn:
  hello:
    prefix: prefix
    suffix: suffix

4、測試

成功打印

在這里插入圖片描述

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

相關(guān)文章

  • Java實現(xiàn)簡易GUI貪吃蛇小游戲

    Java實現(xiàn)簡易GUI貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)簡易GUI貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Spring中的@ControllerAdvice和@ExceptionHandler注解處理全局異常

    Spring中的@ControllerAdvice和@ExceptionHandler注解處理全局異常

    這篇文章主要介紹了Spring中的@ControllerAdvice和@ExceptionHandler注解處理全局異常,@ControllerAdvice ,@ControllerAdvice是一個非常有用的注解,顧名思義,這是一個增強(qiáng)的 Controller,一般配合@ExceptionHandler使用來處理全局異常,需要的朋友可以參考下
    2024-01-01
  • 一文教會你cmd命令運行java程序

    一文教會你cmd命令運行java程序

    這篇文章主要給大家介紹了關(guān)于如何使用cmd命令運行java程序的相關(guān)資料,這是一個非常有用的技能,特別是當(dāng)您需要在沒有集成開發(fā)環(huán)境(IDE)的情況下編寫和運行Java代碼時,需要的朋友可以參考下<BR>
    2024-06-06
  • 使用Spring由構(gòu)造方法自動裝配

    使用Spring由構(gòu)造方法自動裝配

    這篇文章主要介紹了使用Spring由構(gòu)造方法自動裝配,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 微信開發(fā)協(xié)議小結(jié)

    微信開發(fā)協(xié)議小結(jié)

    通過本教程給大家分享微信開發(fā)協(xié)議小結(jié)的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,感興趣的朋友一起看看吧
    2016-11-11
  • Java基礎(chǔ)知識之StringWriter流的使用

    Java基礎(chǔ)知識之StringWriter流的使用

    這篇文章主要介紹了Java基礎(chǔ)知識之StringWriter流的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java跳出循環(huán)的三種方式總結(jié)(break語句、continue語句和return語句)

    java跳出循環(huán)的三種方式總結(jié)(break語句、continue語句和return語句)

    在實際編程中,有時需要在條件語句匹配的時候跳出循環(huán),下面這篇文章主要給大家介紹了關(guān)于java跳出循環(huán)的三種方式,其中包括break語句、continue語句和return語句的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 淺談hibernate中懶加載禁用操作

    淺談hibernate中懶加載禁用操作

    這篇文章主要介紹了淺談hibernate中懶加載禁用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 詳解Java 信號量Semaphore

    詳解Java 信號量Semaphore

    這篇文章主要介紹了Java 信號量Semaphore的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java并發(fā),感興趣的朋友可以了解下
    2020-09-09
  • java批量插入數(shù)據(jù)的幾種方法

    java批量插入數(shù)據(jù)的幾種方法

    這篇文章主要給大家介紹了關(guān)于java批量插入數(shù)據(jù)的幾種方法,大家在Java項目中經(jīng)常會出現(xiàn)大量向數(shù)據(jù)庫中插入的情況,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06

最新評論