網站首頁 編程語言 正文
目錄
自定義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
- 上一篇:IDEA如何配置Tomcat
- 下一篇:C#異步編程的三種模式_C#教程
相關推薦
- 2023-06-16 C#函數out多個返回值問題_C#教程
- 2022-06-19 C語言圖文并茂講解分支語句用法_C 語言
- 2022-07-31 Python常見的幾種數據加密方式_python
- 2022-06-19 C#中的checksum計算公式_C#教程
- 2023-01-07 Python個人博客程序開發實例后臺編寫_python
- 2022-06-19 Go中Writer和Reader接口的使用入門_Golang
- 2023-01-26 Python+Sklearn實現異常檢測_python
- 2022-07-16 Electron項目打包
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支