日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Spring Boot自定義Start組件開發實現

作者:奇點_97 更新時間: 2022-06-12 編程語言

目錄

自定義starter

為什么要自定義starter

自定義starter的命名規則

 實現方法

引入依賴

編寫測試類

創建配置類

創建spring.factories文件

亂碼問題

解決方案:

??1. 使用yml配置文件進行配置。

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

??3. 把中文換成對應的ASCII碼。


自定義starter


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

為什么要自定義starter


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


自定義starter的命名規則


SpringBoot提供的starter以spring-boot-starter-xxx的方式命名的。官方建議自定義的starter使用 xxx-spring-boot-starter命名規則。以區分SpringBoot生態提供的starter。

有了以上的了解后,來創建 Maven 項目,目錄結構如下:

 

 實現方法

 實現自定義starter大致分一下幾步:

  • 1.引入pom依賴
  • 2.編寫測試用例類
  • 3.創建自動配置類
  • 4.在resources包下增加配置文件

引入依賴



    4.0.0

    cn.mystylefree
    custom-spring-boot-starter
    1.0-SNAPSHOT

    
        17
        17
    
    
        
            org.springframework.boot
            spring-boot-autoconfigure
            2.7.0
        
    

這里引入了自動配置類

     
        
            org.springframework.boot
            spring-boot-autoconfigure
            2.7.0
        
    

編寫測試類

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

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

}

省略set/get方法和toString方法

創建配置類

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


}

創建spring.factories文件

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

一定要按照下面的位置結構添加

文件中的內容如下

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

這時配置都加好了

只需從新打下包就行

mvn clean install 

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

接下來我們就能使用剛剛自定義的jar包實現pom依賴引用了

這是我的maven依賴地址

將這個依賴加入到新的項目中引入即可

這是我的一個新springboot項目

 1.加入依賴

根據自己的名稱添加

         
            cn.mystylefree
            custom-spring-boot-starter
            1.0-SNAPSHOT
        

2.設置application.properties

person.id=1
person.name=小米

由于設置的前綴名上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);
    }

}

這時 調試就能使用自定義的starter了

 但是發現出現中文亂嗎了,不慌設置一下編碼格式

重新啟動項目

亂碼問題

發現還是亂碼??? 


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

??原因: Spring Boot注解讀取application.properties或者application-{profile}.properties文件時默認的是ISO_8859_1編碼。

解決方案:

??1. 使用yml配置文件進行配置。

Spring Boot在讀取yaml配置文件時使用的是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. 把中文換成對應的ASCII碼。

custom.user.sex=男
換成:

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

 如果覺得本文對你有幫助,歡迎點贊,歡迎關注我,如果有補充歡迎評論交流,我將努力創作更多更好的文章。

參考文檔:

Spring Boot使用@ConfigurationProperties或者@Value讀取properties文件中文亂碼_Qiwany的博客-CSDN博客??在Spring Boot項目中,有時候需要自定義一些配置,如果使用中文值并使用注解讀取時就會出現亂碼。原因: SpringBoot注解讀取application.properties或者application-{profile}.properties文件時默認的是ISO_8859_1編碼。解決方案:??1. 使用yml配置文件進行配置。Spring Boot在讀取yaml配置文件時使用的是UTF-8的編碼方式。??2. 使用自定義配置文件如:custom.properties配置中文屬性,并使用https://blog.csdn.net/Qiwan2/article/details/106333255


原文鏈接:https://blog.csdn.net/qq_29235677/article/details/125226948

欄目分類
最近更新