Spring中使用屬性文件properties的兩種方式
阿新 • • 發佈:2017-05-21
文件 location 郵件發送 class mave red onf 路徑 文件內容
實際項目中,通常將可配置的參數放到屬性文件中,例如數據庫連接信息、redis連接信息等,便於統一管理。然後通過IoC框架spring將其加載到上下文中,使得程序可以直接使用。
創建mysql.properties文件,並置於CLASSPATH路徑中,如果使用maven構建工程,直接放置在resources文件夾下。文件內容:
mysql.url=jdbc:mysql://192.168.1.101:3306/demo
mysql.username=root
mysql.password=123456
在spring容器啟動時,使用內置bean對屬性文件信息進行加載,在applicationContext.xml中添加:
<!-- spring的屬性加載器,加載properties文件中的屬性 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>mysql.properties</value> </property> <property name="fileEncoding"value="UTF-8" /> </bean>
屬性信息加載後其中一種使用方式是在其它bean定義中直接根據屬性信息的key引用value,如郵件發送器bean的配置:
<!-- 配置數據源 --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /> <property name="url"value="${mysql.url}" /> <property name="username" value="${mysql.username}" /> <property name="password" value="${mysql.password}" /> </bean>
另一種使用方式是在代碼中獲取配置的屬性信息,可定義一個java bean:RedisConfig.java,利用註解將代碼中需要使用的屬性信息註入。如屬性文件中有如下信息需在代碼中獲取使用:
redis.host=192.168.1.101
redis.port=6379
RedisConfig.java對應的代碼:
1 package org.springinaction.weather.config; 2 3 import org.springframework.beans.factory.annotation.Value; 4 import org.springframework.stereotype.Component; 5 6 @Component("redisConfig") 7 public class RedisConfig { 8 9 @Value("${redis.host}") 10 private String host; 11 12 @Value("${redis.port}") 13 private String port; 14 15 public String getHost() { 16 return host; 17 } 18 19 public String getPort() { 20 return port; 21 } 22 }
通過get方法獲取對應的屬性信息:
1 import org.springframework.context.ApplicationContext; 2 import org.springframework.context.support.ClassPathXmlApplicationContext; 3 import org.springinaction.weather.config.RedisConfig; 4 5 public class RedisTest { 6 7 public static void main(String[] args) { 8 ApplicationContext context = new ClassPathXmlApplicationContext("spring-redis.xml"); 9 RedisConfig redisConfig = context.getBean(RedisConfig.class); 10 System.out.println(redisConfig.getHost()); 11 System.out.println(redisConfig.getPort()); 12 } 13 14 }
通過get方法獲取對應的屬性信息,優點是代碼中使用方便,缺點是如果代碼中需用到新的屬性信息,需對RedisConfigjava做相應的添加修改。
Spring中使用屬性文件properties的兩種方式