1. 程式人生 > >Spring的properties配置檔案注入

Spring的properties配置檔案注入

1. 使用PropertiesFactoryBean

配置檔案

<bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
	<property name="locations">
		<list>
			<value>classpath:app.properties</value>
		</list>
	</property>
	<property name="fileEncoding" value="UTF-8" />
</bean>
<!-- 可以簡寫成 -->
<util:properties id="config" location="classpath:app.properties"/>

程式碼

@Value("#{config[host]}")
private String host;

注意

@Value("#{config[host]}")中不能有".",例如server.host,不能正確解析

2. PropertyPlaceholderConfigurer

配置檔案

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="locations">
		<array>
			<value>classpath:app.properties</value>
		</array>
	</property>
	<property name="fileEncoding" value="UTF-8"></property>
</bean>
<!-- 可以簡寫成 -->
<context:property-placeholder location="classpath:app.properties"/>

<context:property-placeholder     
        location="屬性檔案,多個之間逗號分隔"    
        file-encoding="檔案編碼"    
        ignore-resource-not-found="是否忽略找不到的屬性檔案"    
        ignore-unresolvable="是否忽略解析不到的屬性,如果不忽略,找不到將丟擲異常"    
        properties-ref="本地Properties配置"    
        local-override="是否本地覆蓋模式,即如果true,那麼properties-ref的屬性將覆蓋location載入的屬性,否則相反"    
        system-properties-mode="系統屬性模式,預設ENVIRONMENT(表示先找ENVIRONMENT,再找properties-ref/location的),NEVER:表示永遠不用ENVIRONMENT的,OVERRIDE類似於ENVIRONMENT"    
        order="順序"    
        />

程式碼

@Value("${server.host}")
private String host;