Spring中的Properties
阿新 • • 發佈:2018-02-12
class bean ring path fig property active fix []
Properties 註入
- 通過 xml 配置
- 通過 @PropertySource 配置
- PropertyPlaceholderConfigurer
- PropertySourcesPlaceholderConfigurer
Properties 的使用
- 在 xml 配置文件中使用
- 通過 @Value 註入使用
- 通過 Environment 獲取
- 通過 application.properties 獲取
Spring Boot 相關
- @ConfigurationProperties
- 配置優先級
Properties 配置
通過 xml 配置
<context:property-placeholder location="classpath:sys.properties" />
通過 @PropertySource 配置
@PropertySource("classpath:sys.properties") @Configuration public class DemoConfig { }
@PropertySource 在這裏必須搭配 @Configuration 來使用。
PropertyPlaceholderConfigurer
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:sys.properties</value> </list> </property> <property name="ignoreUnresolvablePlaceholders" value="true"/> <!-- 這裏可以配置一些屬性 --> </bean>
java configuration 版本
@Bean public PropertyPlaceholderConfigurer propertiess() { PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer(); Resource[] resources = new ClassPathResource[]{new ClassPathResource("sys.properties")}; ppc.setLocations(resources); ppc.setIgnoreUnresolvablePlaceholders(true); return ppc; }
PropertySourcesPlaceholderConfigurer
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:sys.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<!-- 這裏可以配置一些屬性 -->
</bean>
java configuration 版本
@Bean public PropertySourcesPlaceholderConfigurer properties() { PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer(); Resource[] resources = new ClassPathResource[]{new ClassPathResource("sys.properties")}; pspc.setLocations(resources); pspc.setIgnoreUnresolvablePlaceholders(true); return pspc; }
Properties 的使用
在 xml 配置文件中使用
<bean id="xxx" class="com.demo.Xxx"> <property name="url" value="${mysql.jdbc.url}" /> </bean>
通過 @Value 註入使用
@Value("${demo.jdbc.url}") private String url;
通過 Environment 獲取
只有使用註解 @PropertySource 的時候可以用,否則會得到 null。
@Autowired private Environment env; public String getUrl() { return env.getProperty("demo.jdbc.url"); }
通過 application.properties 獲取
demo.database.url=jdbc:mysql:
Spring Boot 相關
@ConfigurationProperties
application.properties
demo.db.url=jdbc:mysql: demo.db.username=test demo.db.password=123456 @Configuration @ConfigurationProperties(prefix = "demo.db") @Data public class DataBase { String url; String username; String password; }
配置優先級
java -Dspring.profiles.active=env -jar app.jar
如果存在這兩個文件,application.properties 和 application-env.properties ,則兩個文件中的配置都會註冊進去,如果有重復的 key,application-env.properties 文件中的優先級較高。
總結:啟動參數 > application-{env}.properties > application.properties
Spring中的Properties