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

SpringBoot中的自定義starter詳解

 更新時(shí)間: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)常會有一些獨(dú)立于業(yè)務(wù)之外的配置模塊,我們經(jīng)常將其放到一個(gè)特定的包下,然后如果另一個(gè)工程需要復(fù)用這塊功能的時(shí)候,需要將代碼硬拷貝到另一個(gè)工程,重新集成一遍,麻煩至極。如果我們將這些可獨(dú)立于業(yè)務(wù)代碼之外的功配置模塊封裝成一個(gè)個(gè)starter,復(fù)用的時(shí)候只需要將其在pom中引用依賴即可。

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

官方命名:

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

自定義命名:

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

二、starter實(shí)現(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、定義一個(gè)實(shí)體類映射配置信息

@ConfigurationProperties(prefix = "shawn.hello")它可以把相同前綴的配置信息通過配置項(xiàng)名稱映射成實(shí)體類,可以直接在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類定義為一個(gè)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編寫一個(gè)自己的 META-INF\spring.factories

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

7、打包到Maven倉庫

在這里插入圖片描述

三、測試starter

1、新建項(xiàng)目,引入依賴

<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)文章

  • Spring?Cloud?OpenFeign實(shí)例介紹使用方法

    Spring?Cloud?OpenFeign實(shí)例介紹使用方法

    Spring?Cloud?OpenFeign?對?Feign?進(jìn)行了二次封裝,使得在?Spring?Cloud?中使用?Feign?的時(shí)候,可以做到使用?HTTP?請求訪問遠(yuǎn)程服務(wù),就像調(diào)用本地方法一樣的,開發(fā)者完全感知不到這是在調(diào)用遠(yuǎn)程訪問,更感知不到在訪問?HTTP?請求
    2022-09-09
  • Java花式解決'分割回文串 ii'問題詳解

    Java花式解決'分割回文串 ii'問題詳解

    最學(xué)習(xí)動態(tài)規(guī)劃思想的路上,遇見了‘分割回文串問題’,如臨大敵啊,題目聽起來蠻簡單,思考起來卻也沒那么容易,本文將為大家詳細(xì)介紹幾種解決分割回文串 ii問題的辦法,需要的可以參考一下
    2021-12-12
  • MyBatis Dynamic SQL 入門指南

    MyBatis Dynamic SQL 入門指南

    本文主要介紹了MyBatis Dynamic SQL 入門指南,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-02-02
  • Mybatis-Plus的多數(shù)據(jù)源你了解嗎

    Mybatis-Plus的多數(shù)據(jù)源你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Mybatis-Plus的多數(shù)據(jù)源,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java生成的隨機(jī)數(shù)靠譜嗎?多少次會重復(fù)?

    Java生成的隨機(jī)數(shù)靠譜嗎?多少次會重復(fù)?

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java生成的隨機(jī)數(shù)靠不靠譜展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • Monaco?Editor實(shí)現(xiàn)sql和java代碼提示實(shí)現(xiàn)示例

    Monaco?Editor實(shí)現(xiàn)sql和java代碼提示實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了Monaco?Editor代碼提示sql和java實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • springboot項(xiàng)目中常用的工具類和api詳解

    springboot項(xiàng)目中常用的工具類和api詳解

    在Spring Boot項(xiàng)目中,開發(fā)者通常會依賴一些工具類和API來簡化開發(fā)、提高效率,以下是一些常用的工具類及其典型應(yīng)用場景,涵蓋 Spring 原生工具、第三方庫(如Hutool、Guava) 和 Java 自帶工具,本文給大家介紹springboot項(xiàng)目中常用的工具類和api,感興趣的朋友一起看看吧
    2025-04-04
  • Java事務(wù)@Transactional?、@GlobalTransactional使用步驟

    Java事務(wù)@Transactional?、@GlobalTransactional使用步驟

    這篇文章主要介紹了使用@Transactional和@GlobalTransactional注解進(jìn)行事務(wù)管理的區(qū)別和應(yīng)用場景,@Transactional用于單個(gè)服務(wù)內(nèi)的本地事務(wù)管理,而@GlobalTransactional用于跨服務(wù)的分布式事務(wù)管理,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2025-05-05
  • SpringBoot @ComponentScan掃描的局限性方式

    SpringBoot @ComponentScan掃描的局限性方式

    文章總結(jié):SpringBoot的@ComponentScan注解在掃描組件時(shí)存在局限性,只能掃描指定的包及其子包,無法掃描@SpringBootApplication注解自動配置的組件,使用@SpringBootApplication注解可以解決這一問題,它集成了@Configuration、@EnableAutoConfiguration
    2025-01-01
  • Maven項(xiàng)目如何在pom文件中引入lib下的第三方j(luò)ar包并打包進(jìn)去

    Maven項(xiàng)目如何在pom文件中引入lib下的第三方j(luò)ar包并打包進(jìn)去

    在使用Maven進(jìn)行項(xiàng)目開發(fā)時(shí),引入第三方私有的Jar包可能會遇到問題,一種常見的解決方案是將Jar包添加到項(xiàng)目的lib目錄,并通過IDE進(jìn)行配置,但這需要每個(gè)開發(fā)者單獨(dú)操作,效率低下,更好的方法是通過Maven的pom.xml文件管理這些Jar包
    2024-09-09

最新評論

贵南县| 阳高县| 井陉县| 嘉义市| 原平市| 嘉祥县| 麻江县| 屯昌县| 缙云县| 水富县| 信阳市| 博兴县| 镇坪县| 龙江县| 准格尔旗| 富民县| 墨江| 澳门| 池州市| 黄陵县| 柞水县| 东乡族自治县| 苍梧县| 雷州市| 皮山县| 沽源县| 麻江县| 长泰县| 万全县| 富蕴县| 平安县| 韶关市| 锡林郭勒盟| 永泰县| 偏关县| 合阳县| 文昌市| 抚松县| 巍山| 南康市| 刚察县|