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

SpringBoot自定義Starter與自動配置實現(xiàn)方法詳解

 更新時間:2023年02月07日 10:40:09   作者:你家寶寶  
在Spring Boot官網(wǎng)為了簡化我們的開發(fā),已經(jīng)提供了非常多場景的Starter來為我們使用,即便如此,也無法全面的滿足我們實際工作中的開發(fā)場景,這時我們就需要自定義實現(xiàn)定制化的Starter

前言

前段時間,SpringBoot 出 3.x 版本了。聽說把自動配置給刀了?。。?.x版本不再使用 spring.factories做自動配置)

但是這個在真正開始說要棄用,是在 2.7版本。只是向下兼容了 spring.factories 的配置方式。

也就是說兩種寫法共存,如下圖:

META-INF 目錄下增加了 spring 目錄,其中有文件 org.springframework.boot.autoconfigure.AutoConfiguration.imports

文件內(nèi)容是配置類的完整類名。

比如我當前使用的配置內(nèi)容是:

org.feng.config.AppInfoConfiguration

而 spring.factories 中的配置內(nèi)容和之前一致:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.feng.config.AppInfoConfiguration

這一點其實也可以從 Spring 的源碼包中看到:

本次練習的代碼倉庫

https://gitee.com/fengsoshuai/custom-springboot-starter-demo.git

代碼簡要說明

模塊說明
customer-starter自定義的 starter,并提供配置、示例接口&實現(xiàn)類
test測試自定義starter,引入自定義starter的依賴,并定義了啟動類,控制器類

custom-springboot-starter-demo 的pom文件

主要定義了 SpringBoot的版本。

<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>org.example</groupId>
  <artifactId>custom-springboot-starter-demo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>custom-springboot-starter-demo</name>
  <url>http://maven.apache.org</url>
  <modules>
    <module>custom-starter</module>
    <module>test</module>
  </modules>
  <properties>
    <java.version>11</java.version>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <springboot.dependencies.version>2.7.8</springboot.dependencies.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-dependencies -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${springboot.dependencies.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
          <configuration>
            <source>11</source>
            <target>11</target>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

customer-starter 的pom文件

<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>
    <parent>
        <groupId>org.example</groupId>
        <artifactId>custom-springboot-starter-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>custom-starter</artifactId>
    <packaging>jar</packaging>
    <name>custom-starter</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    <build>
        <!-- 將自定義starter中的默認配置文件也打包 -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.yml</include>
                    <include>**/*.yaml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
</project>

test 的pom文件

<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>
    <parent>
        <groupId>org.example</groupId>
        <artifactId>custom-springboot-starter-demo</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>test</artifactId>
    <packaging>jar</packaging>
    <name>test</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.example</groupId>
            <artifactId>custom-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

配置類

package org.feng.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean;
/**
 * 自動配置類:在META-INF中不做配置時,會拋出警告 <code>Application context not configured for this file</code>
 *
 * @version V1.0
 */
@AutoConfiguration
public class AppInfoConfiguration {
    @Value("${app.url.baiDu}")
    private String baiDuUrl;
    public String getBaiDuUrl() {
        return baiDuUrl;
    }
    public void setBaiDuUrl(String baiDuUrl) {
        this.baiDuUrl = baiDuUrl;
    }
    @Bean
    public AppUrl generateAppUrl() {
        AppUrl appUrl = new AppUrl();
        appUrl.setBaidu(baiDuUrl);
        return appUrl;
    }
}

配置信息

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

相關(guān)文章

  • 深入解析Java中ThreadLocal線程類的作用和用法

    深入解析Java中ThreadLocal線程類的作用和用法

    ThreadLocal為解決多線程程序的并發(fā)問題提供了一種新的思路,ThreadLocal并不是一個Thread,而是Thread的局部變量,本文就來深入解析Java中ThreadLocal線程類的作用和用法.
    2016-05-05
  • Java解決程序包不存在的問題解決

    Java解決程序包不存在的問題解決

    在Java編程中,我們可以使用Maven或Gradle等構(gòu)建工具來管理依賴庫,本文主要介紹了Java解決程序包不存在的問題解決,具有一定的參考價值,感興趣的可以了解 一下
    2023-12-12
  • java使用CKEditor實現(xiàn)圖片上傳功能

    java使用CKEditor實現(xiàn)圖片上傳功能

    這篇文章主要為大家詳細介紹了java使用CKEditor實現(xiàn)圖片上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Java8之lambda表達式基本語法

    Java8之lambda表達式基本語法

    本文通過示例大家給大家介紹了java8之lambda表達式的基本語法,感興趣的的朋友一起看看吧
    2017-08-08
  • 實例講解java的純數(shù)字加密解密

    實例講解java的純數(shù)字加密解密

    本文給大家分享的是一個java純數(shù)字加密解密技術(shù),加密和解密本身就是一對共生體,缺一不可,需要的朋友可以參考下
    2015-07-07
  • 淺談Spring中@NotEmpty、@NotBlank、@NotNull區(qū)別

    淺談Spring中@NotEmpty、@NotBlank、@NotNull區(qū)別

    本文主要介紹了淺談Spring中@NotEmpty、@NotBlank、@NotNull區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 超實用的Java快捷鍵(總結(jié))

    超實用的Java快捷鍵(總結(jié))

    下面小編就為大家?guī)硪黄瑢嵱玫腏ava快捷鍵(總結(jié))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • java信號量控制線程打印順序的示例分享

    java信號量控制線程打印順序的示例分享

    這篇文章主要介紹了java信號量控制線程打印順序的示例,如ABCABC這樣輸出線程,大家參考使用吧
    2014-01-01
  • 淺析java創(chuàng)建文件和目錄

    淺析java創(chuàng)建文件和目錄

    這篇文章主要介紹了淺析java創(chuàng)建文件和目錄的關(guān)鍵技術(shù)點以及演示示例,是篇非常不錯的文章,有需要的朋友可以參考下
    2014-09-09
  • Spring基于XML配置AOP詳解

    Spring基于XML配置AOP詳解

    這篇文章主要介紹了Spring基于XML配置AOP詳解,Spring 的 AOP 功能是基于 AspectJ 實現(xiàn)的,支持使用 XML 方式定義 AOP 切面,Spring 項目使用 AOP 功能需要定義三個部分:切面、切點和通知,需要的朋友可以參考下
    2023-09-09

最新評論