iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
自我挑戰組

探索 Spring Boot Doc系列 第 22

Annotation PropertySource

  • 分享至 

  • xImage
  •  

在前兩天的 CommandLinePropertySource 的實作類別之後,現在介紹一過在過程之中,
常見的一個標籤 Annotation PropertySource

先來看官方對於 PropertySource 標籤的解釋

Annotation providing a convenient and declarative mechanism for adding a PropertySource to Spring's Environment]. To be used in conjunction with @`[Configuration] classes.

提供一個便利聲明式加入PropertySource 到Spring 環境的機制。
下方為一個官方提供的 Spring 主要註冊類別( 標註 @Configuration)

 @Configuration
 @PropertySource("classpath:/com/myco/app.properties")
 public class AppConfig {

     @Autowired
     Environment env;

     @Bean
     public TestBean testBean() {
         TestBean testBean = new TestBean();
         testBean.setName(env.getProperty("testbean.name"));
         return testBean;
     }
 }

app.properties 為以下內容

testbean.name=myTestBean

透過 PropertySource 將 app.properties 的內容提供到 PropertySource 的 Environment 集合。
看向註冊的方法,PropertySource 會將註冊資料注入到 Environment (來自 org.springframework.core.env 下的 Interface Environment) 。

第二個由官方提供的案例

@Configuration
 @PropertySource("classpath:/com/${my.placeholder:default/path}/app.properties")
 public class AppConfig {

     @Autowired
     Environment env;

     @Bean
     public TestBean testBean() {
         TestBean testBean = new TestBean();
         testBean.setName(env.getProperty("testbean.name"));
         return testBean;
     }
 }

同樣是一個主要註冊類別,但這次不同的是, Annotation PropertySource 中的路徑帶有 ${} ,
而這個符號就和 @Value 標籤之中讀取註冊檔案的方式是相同的。
${my.placeholder:default/path} 會從系統環境變數之中,讀取 my.placeholder,若沒有讀取到就會去採用預設值 default/path 。

參考資料

{官方}Annotation PropertySource

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/PropertySource.html


上一篇
JOptCommandLinePropertySource
下一篇
Doc 7.1.1 Startup Failure
系列文
探索 Spring Boot Doc30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言