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

Spring?Boot自定義Starter組件開發(fā)實(shí)現(xiàn)配置過程

 更新時(shí)間:2022年06月13日 10:17:10   作者:奇點(diǎn)_97  
SpringBoot中的starter是一種非常重要的機(jī)制,能夠拋棄以前繁雜的配置,將其統(tǒng)一集成進(jìn)?starter,應(yīng)用者只需要在maven中引入starter依賴,這篇文章主要介紹了Spring?Boot自定義Starter組件開發(fā)實(shí)現(xiàn),需要的朋友可以參考下

自定義starter

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

為什么要自定義starter

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

自定義starter的命名規(guī)則

SpringBoot提供的starter以spring-boot-starter-xxx的方式命名的。官方建議自定義的starter使用 xxx-spring-boot-starter命名規(guī)則。以區(qū)分SpringBoot生態(tài)提供的starter。

有了以上的了解后,來創(chuàng)建 Maven 項(xiàng)目,目錄結(jié)構(gòu)如下:

實(shí)現(xiàn)方法

實(shí)現(xiàn)自定義starter大致分一下幾步:

1.引入pom依賴

2.編寫測試用例類

3.創(chuàng)建自動(dòng)配置類

4.在resources包下增加配置文件

引入依賴

<?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>cn.mystylefree</groupId>
    <artifactId>custom-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.7.0</version>
        </dependency>
    </dependencies>
</project>

這里引入了自動(dòng)配置類

     <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.7.0</version>
        </dependency>
    </dependencies>

編寫測試類

在使用Spring官方的Starter時(shí)通常可以在application.properties中來配置參數(shù)覆蓋掉默認(rèn)的值。即name的值會被配置文件中的值替換掉。

@EnableConfigurationProperties({PersonProperties.class}) //開啟ConfigurationProperties注解
@ConfigurationProperties(prefix = "person")
public class PersonProperties {
    private int id;
    private String name="章三";
}

省略set/get方法和toString方法

創(chuàng)建配置類

@Configuration
//當(dāng)類路徑classpath下有指定當(dāng)類   (SimpleBean)  的情況下進(jìn)行自動(dòng)配置
@ConditionalOnClass(PersonProperties.class)
public class MyAutoConfiguration {
    static {
        System.out.println("MyAutoConfiguration init ...");
    }
    @Bean
    public PersonProperties personProperties(){
        return new PersonProperties();
    }
}

創(chuàng)建spring.factories文件

/META-INF/spring.factories文件放在/src/main/resources目錄下
注意:META-INF是自己手動(dòng)創(chuàng)建的目錄,spring.factories也是自己手動(dòng)創(chuàng)建的文件,在該文件中配置自己的自動(dòng)配置類。

一定要按照下面的位置結(jié)構(gòu)添加

文件中的內(nèi)容如下

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.mystylefree.config.MyAutoConfiguration

這時(shí)配置都加好了

只需從新打下包就行

mvn clean install 

我們自己設(shè)置的starter包就保存到本地的maven倉庫了

接下來我們就能使用剛剛自定義的jar包實(shí)現(xiàn)pom依賴引用了

這是我的maven依賴地址

將這個(gè)依賴加入到新的項(xiàng)目中引入即可

這是我的一個(gè)新springboot項(xiàng)目

1.加入依賴

根據(jù)自己的名稱添加

         <dependency>
            <groupId>cn.mystylefree</groupId>
            <artifactId>custom-spring-boot-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

2.設(shè)置application.properties

person.id=1
person.name=小米

由于設(shè)置的前綴名上person

3.添加測試用例

@SpringBootTest
class SpringBootDemoApplicationTests {
    @Autowired
    private PersonProperties personProperties;
    @Test
    void contextLoads() {
        int id = personProperties.getId();
        String name = personProperties.getName();
        System.out.println(id+name);
    }
}

這時(shí) 調(diào)試就能使用自定義的starter了

但是發(fā)現(xiàn)出現(xiàn)中文亂嗎了,不慌設(shè)置一下編碼格式

重新啟動(dòng)項(xiàng)目

亂碼問題

發(fā)現(xiàn)還是亂碼???

在Spring Boot項(xiàng)目中,有時(shí)候需要自定義一些配置,如果使用中文值并使用注解讀取時(shí)就會出現(xiàn)亂碼。

原因: Spring Boot注解讀取application.properties或者application-{profile}.properties文件時(shí)默認(rèn)的是ISO_8859_1編碼。

解決方案:

1. 使用yml配置文件進(jìn)行配置。

Spring Boot在讀取yaml配置文件時(shí)使用的是UTF-8的編碼方式。

2. 使用自定義配置文件如:

custom.properties配置中文屬性,并使用@PropertySource(value="classpath:custom.properties", encoding="UTF-8")注解指定讀取的文件和編碼。代碼如下:

@Data
@ConfigurationProperties(prefix = "custom.user")
@PropertySource(value="classpath:custom.properties", encoding="UTF-8")
public class UserProperties {
//	@Value("${custom.user.name}")
	private String name;
//	@Value("${custom.user.sex}")
	private String sex;
}

使用@ConfigurationProperties和@Value均可以正常讀取。

3. 把中文換成對應(yīng)的ASCII碼。

custom.user.sex=男
換成:

custom.user.sex=\u7537
以上三種方法均可以正常讀取配置文件中的中文字符。

參考文檔:

Spring Boot使用@ConfigurationProperties或者@Value讀取properties文件中文亂碼

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

相關(guān)文章

  • Java Metrics系統(tǒng)性能監(jiān)控工具的使用詳解

    Java Metrics系統(tǒng)性能監(jiān)控工具的使用詳解

    Metrics是一個(gè)Java庫,可以對系統(tǒng)進(jìn)行監(jiān)控,統(tǒng)計(jì)一些系統(tǒng)的性能指標(biāo)。本文就來和大家詳細(xì)聊聊這個(gè)工具的具體使用,希望對大家有所幫助
    2022-11-11
  • springboot整合Atomikos的示例詳解

    springboot整合Atomikos的示例詳解

    這篇文章主要為大家詳細(xì)介紹了幾種分布式事務(wù)的解決方案的兩階段提交Atomikos,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-11-11
  • 詳解springboot WebTestClient的使用

    詳解springboot WebTestClient的使用

    WebClient是一個(gè)響應(yīng)式客戶端,它提供了RestTemplate的替代方法。這篇文章主要介紹了詳解springboot WebTestClient的使用, 具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • SpringBoot2.x漏洞將logback1.2.x 升級至1.3.x

    SpringBoot2.x漏洞將logback1.2.x 升級至1.3.x

    安全部門在代碼漏洞掃描中發(fā)現(xiàn)logback 1.2.x版本存在CVE漏洞,建議升級至1.3.x版本,本文就來介紹了logback1.2.x 升級至1.3.x,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-09-09
  • Java中的自動(dòng)拆裝箱、基本類型的轉(zhuǎn)換、包裝類的緩存詳解

    Java中的自動(dòng)拆裝箱、基本類型的轉(zhuǎn)換、包裝類的緩存詳解

    文章詳細(xì)介紹了Java中數(shù)據(jù)類型的拆裝箱、自動(dòng)拆箱和裝箱,以及包裝類的緩存機(jī)制,包括基本數(shù)據(jù)類型的容量大小、轉(zhuǎn)換規(guī)則和自動(dòng)類型轉(zhuǎn)換等
    2024-12-12
  • MyBatis-Plus3.x版本使用入門和踩過的坑

    MyBatis-Plus3.x版本使用入門和踩過的坑

    Mybatis-Plus是Mybatis的增強(qiáng)版,他只是在Mybatis的基礎(chǔ)上增加了功能,且并未對原有功能進(jìn)行任何的改動(dòng),本文給大家說一下MyBatis-Plus3.x版本使用入門和踩過的坑,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 解決springboot application.properties server.port配置問題

    解決springboot application.properties server.port配置問題

    這篇文章主要介紹了解決springboot application.properties server.port配置問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring WebFlux實(shí)現(xiàn)參數(shù)校驗(yàn)的示例代碼

    Spring WebFlux實(shí)現(xiàn)參數(shù)校驗(yàn)的示例代碼

    請求參數(shù)校驗(yàn),在實(shí)際的應(yīng)用中很常見,網(wǎng)上的文章大部分提供的使用注解的方式做參數(shù)校驗(yàn)。本文主要介紹 Spring Webflux Function Endpoint 使用 Spring Validation 來校驗(yàn)請求的參數(shù)。感興趣的可以了解一下
    2021-08-08
  • Java 字符串壓縮與解壓的開發(fā)記錄

    Java 字符串壓縮與解壓的開發(fā)記錄

    這篇文章主要介紹了Java 字符串壓縮與解壓的開發(fā)記錄,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Java獲取接口的所有實(shí)現(xiàn)類方法總結(jié)示例

    Java獲取接口的所有實(shí)現(xiàn)類方法總結(jié)示例

    這篇文章主要給大家介紹了關(guān)于Java獲取接口的所有實(shí)現(xiàn)類方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-06-06

最新評論

礼泉县| 合山市| 中超| 瑞丽市| 沂源县| 彩票| 抚远县| 普宁市| 梅河口市| 安多县| 南京市| 如皋市| 张家界市| 南涧| 慈溪市| 同江市| 英超| 湄潭县| 屏边| 泊头市| 阿城市| 八宿县| 广饶县| 微博| 龙州县| 临朐县| 鸡泽县| 饶阳县| 容城县| 内江市| 东宁县| 安岳县| 临安市| 绵竹市| 昭平县| 会昌县| 兰考县| 永泰县| 五大连池市| 金湖县| 利川市|