在Spring Boot中使用 @ConfigurationProperties 註解
@ConfigurationProperties根據型別校驗和管理application中的bean。
Spring Boot 使用一些鬆的規則來繫結屬性到@ConfigurationProperties
bean
並且支援分層結構(hierarchical structure)。
開始建立一個@ConfigurationProperties
bean:
@ConfigurationProperties(locations = "classpath:mail.properties", ignoreUnknownFields = false, prefix = "mail") public class MailProperties { public static class Smtp { private boolean auth; private boolean starttlsEnable; // ... getters and setters } @NotBlank private String host; private int port; private String from; private String username; private String password; @NotNull private Smtp smtp; // ... getters and setters }
mail.properties 檔案
mail.host=localhost
mail.port=25
mail.smtp.auth=false
mail.smtp.starttls-enable=false
[email protected]
mail.username=
mail.password=
上例中我們用@ConfigurationProperties
註解就可以繫結屬性了。ignoreUnknownFields
= false
告訴Spring Boot在有屬性不能匹配到宣告的域的時候丟擲異常。開發的時候很方便! prefix
用來選擇哪個屬性的prefix名字來繫結。請注意setters 和 getters 需要在
@ConfigurationProperties
bean中建立!
與@Value
註解相反,
這帶來了程式碼中的一些困擾 (特別是簡單的業務中,個人觀點).OK,但是我們需要用屬性來配置 application. 有至少兩種方式來建立
@ConfigurationProperties
。即可以搭配@Configuration
註解來提供
@Beans 也可以單獨使用並注入 @Configuration bean。@Configuration @ConfigurationProperties(locations = "classpath:mail.properties", prefix = "mail") public class MailConfiguration { public static class Smtp { private boolean auth; private boolean starttlsEnable; // ... getters and setters } @NotBlank private String host; private int port; private String from; private String username; private String password; @NotNull private Smtp smtp; // ... getters and setters @Bean public JavaMailSender javaMailSender() { // omitted for readability } }
方案2
我們和上面例子一樣註解屬性,然後用 Spring的@Autowire
來注入 mail configuration
bean:
@Configuration
@EnableConfigurationProperties(MailProperties.class)
public class MailConfiguration {
@Autowired private MailProperties mailProperties;
@Bean public JavaMailSender javaMailSender() {
// omitted for readability
}
}
請注意
@EnableConfigurationProperties
註解。
這個註解告訴Spring Boot 使能支援@ConfigurationProperties
。如果不指定會看到如下異常:org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [demo.mail.MailProperties] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
注意: 還有其他辦法 (Spring Boot 總是有其他辦法!) 讓
@ConfigurationProperties
beans
被新增 – 用@Configuration
或者 @Component
註解,
這樣就可以在 component scan時候被發現了。不過也有采用讀檔案的方式去做的
new ConfigTool().getClass().getResourceAsStream("/config.properties");
這個就不詳細展開了spring.profiles.active=testdb
application.propreries 裡面可以這樣配置分支來區分線上 @Profile("testdb")
然後通過這個註解去執行
相關推薦
Spring Boot中@ConfigurationProperties註解實現原理原始碼解析
0. 開源專案推薦 Pepper Metrics是我與同事開發的一個開源工具(https://github.com/zrbcool/pepper-metrics),其通過收集jedis/mybatis/httpservlet/dubbo/motan的執行效能統計,並暴露成prometheus等主流時序資料庫相
spring boot中的註解解釋
@Controller:用在controller,相當於@[email protected]同時使用,用@Controller,可以任意返回html頁面和jsp頁面,也可以返回物件 @RestController在使用的時候,只能返回html的頁面,不能配置jsp的試圖解析器 @R
spring boot中@SpringBootApplication註解
spring boot中使用@SpringBootApplication指定類為應用啟動類,自動掃描於當前類同級以及子包下的相應註解註冊為spring beans,在類中main方法中通過SpringApplication的run方法啟動應用。eg:package com.l
spring boot中使用註解實現模糊查詢
//模糊查詢(根據姓名和登記日期模糊查詢所有資料) @Select({"select * from putong_rencai where concat(name,dengji_time
Spring-boot中@ConfigurationProperties,@Value,@PropertySource
1.利用@ConfigurationProperties獲取配置的值,@ConfigurationProperties是springboot提供的基於安全型別的配置放置。 application.properties spring.redis.host=127.0.0.1
在Spring Boot中使用 @ConfigurationProperties 註解
@ConfigurationProperties根據型別校驗和管理application中的bean。 Spring Boot 使用一些鬆的規則來繫結屬性到@ConfigurationProperties bean 並且支援分層結構(hierarchical struc
Spring Boot 中使用 @ConfigurationProperties 註解
@ConfigurationProperties 主要作用:繫結 application.properties 中的屬性 例如: @Configuration public class DataSourceConfig { //資料來源設定 @Bean(name
Spring Boot中使用MyBatis註解配置詳解(1)
sql type .org 實體 sch 整合 PE 匯總 同傳 之前在Spring Boot中整合MyBatis時,采用了註解的配置方式,相信很多人還是比較喜歡這種優雅的方式的,也收到不少讀者朋友的反饋和問題,主要集中於針對各種場景下註解如何使用,下面就對幾種常見的情況舉
spring boot中mybatis使用註解進行模糊查詢
cat 遇到 google 使用註解 ring list bat prop ber 小白一枚,spring boot 2.0.5在使用mybatis進行註解模糊查詢時遇到一些低級的錯誤,現記錄下來錯誤示例:“select * from user where name lik
Spring Boot 中使用 @Transactional 註解配置事務管理
all arc obj 資料 ror 科學 部分 直接 true 事務管理是應用系統開發中必不可少的一部分。Spring 為事務管理提供了豐富的功能支持。Spring 事務管理分為編程式和聲明式的兩種方式。編程式事務指的是通過編碼方式實現事務;聲明式事務基於 AOP,將具體
Spring Boot中使用MyBatis註解配置開發詳解
Spring Boot中使用MyBatis註解配置詳解 原創 2018-04-03 宗野 Spring Boot 最近專案原因可能會繼續開始使用
Spring Boot中使用MyBatis註解配置詳解
轉自翟永超 之前在Spring Boot中整合MyBatis時,採用了註解的配置方式,相信很多人還是比較喜歡這種優雅的方式的,也收到不少讀者朋友的反饋和問題,主要集中於針對各種場景下註解如何使用,下面就對幾種常見的情況舉例說明用法。 在做下面的示例之前,先準備一
Spring Boot中的快取支援——註解配置與EhCache使用
一 點睛 隨著時間的積累,應用的使用使用者不斷增加,資料規模也越來越大,往往資料庫查詢操作會成為影響使用者使用體驗的瓶頸,此時使用快取往往是解決這一問題非常好的手段之一。 Spring 3開始提供了強大的基於註解的快取支援,可以通過註解配置方式低侵入的給原有Spring應
spring boot 程式碼、註解配置獲取yml、properties檔案中的map即鍵值對
一、yml獲取自定義鍵值對 yml中的鍵值對 test: map: key1: value1 key2: value2 key3: value3 pom中的依賴配置 <dependency> <groupId>org.sprin
spring boot中的jave註解學習
per xml文件 作者 main pan 學習 boot 一起 logs 在spring中,不僅框架作者會使用java註解,開發者也常使用。 可以隨手給個例子:在org.springframework.boot.autoconfigure.jdbc.DataSo
spring boot 使用有註解的類中的靜態方法
1. 在配置檔案中加配置引數 #微信相關資料 wechat: mch_appid: abc122345677 wx_secret: abcyyydffgdd7b95403552c2 m
【spring boot+mybatis】註解使用方式(無xml配置)設定自動駝峰明明轉換(mapUnderscoreToCamelCase),IDEA中xxDao報錯could not autowi
最近使用spring boot+mybatis,使用IntelliJ IDEA開發,記錄一些問題的解決方法。1、在使用@Mapper註解方式代替XXmapper.xml配置檔案,使用@Select等註解配置sql語句的情況下,如何配置資料庫欄位名到JavaBean實體類屬性命
Spring Boot中的快取支援(一)註解配置與EhCache使用
隨著時間的積累,應用的使用使用者不斷增加,資料規模也越來越大,往往資料庫查詢操作會成為影響使用者使用體驗的瓶頸,此時使用快取往往是解決這一問題非常好的手段之一。Spring 3開始提供了強大的基於註解的快取支援,可以通過註解配置方式低侵入的給原有Spring應用增加快取功能,提高資料訪問效能。 在Spr
Spring Boot 中使用 @Transactional 註解配置事務管理(轉載)
事務管理是應用系統開發中必不可少的一部分。Spring 為事務管理提供了豐富的功能支援。Spring 事務管理分為程式設計式和宣告式的兩種方式。程式設計式事務指的是通過編碼方式實現事務;宣告式事務基於 AOP,將具體業務邏輯與事務處理解耦。宣告式事務管理使業務程式碼邏輯不受汙
Spring Boot中自定義註解+AOP實現主備庫切換
摘要: 本篇文章的場景是做排程中心和監控中心時的需求,後端使用TDDL實現分表分庫,需求:實現關鍵業務的查詢監控,當用Mybatis查詢資料時需要從主庫切換到備庫或者直接連到備庫上查詢,從而減小主庫的壓力,在本篇文章中主要記錄在Spring Boot中通過自定義註解結合AOP實現直接連線備庫查詢。 一.通過A