Spring之Property檔案讀取

bladestone發表於2019-03-13

配置檔案的讀取

 在Spring應用中,會存在大量的配置檔案設定,這些設定需要通過一個簡便的方式被讀取到系統中,被系統讀取使用。

配置資訊定義

假定把配置資訊放入config.properties檔案裡面,其內容以鍵值對的方式出現,內容如下:

    key1=val1
    name=zhangsan
    password=1234

在Spring應用中,將如何讀取配置資訊呢?

@PropertySource和@Value

基於@PropertySource在配置類中讀取配置資訊,基於@Value直接提取特定鍵值對。示例如下:

@Configuration
@PropertySoruce("classpath:config.properties")
public class AppConfig2 {
     @Value("${key1}")
     private String key1;
     @Value("${name}")
     private String name;
     @Value("${password}")
     private String password;
}

這樣就可以直接讀取配置資訊了。

基於@ImportSource和@Value

首先定義一個Spring的配置檔案,spring-bean.xml:

<beans> 
     <context:annotation-config/> 
    <context:property-placeholder location="classpath:/com/acme/jdbc.properties"/> 
 
   <!--  在Spring配置檔案中直接建立Bean-->
    <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="url" value="${jdbc.url}"/>
           <property name="username" value="${jdbc.username}"/> 
           <property name="password" value="${jdbc.password}"/> 
       </bean>
 </beans>

其中宣告瞭引入jdbc的配置檔案資訊, 並在配置檔案中直接建立了Bean.

基於ImportSource讀取配置資訊:

@Configuration 
@ImportResource("classpath:spring-bean.xml")
 public class AppConfig{ 
      @Value("${jdbc.url}") 
      private String url;
      
      @Value("${jdbc.username}") 
      private String username; 
      
      @Value("${jdbc.password}") 
      private String password; 
      
      @Bean 
      public DataSource dataSource() { 
           return new DriverManagerDataSource(url,username,password); 
       }
 }

其本質上是通過載入Spring的配置檔案資訊,然後在配置檔案中載入配置資訊,既可以直接在配置檔案中建立對應的例項。
也可以讀取出相應的配置資訊之後,在Java Config Bean中進行例項物件的建立。

總結

兩種方式。 @ImportSource是利用Spring 配置檔案中的placeholder機制來進行配置檔案的替換以及載入。相對而言,@PropertySource方式更為簡潔易用。

相關文章