一、配置方式
@Value需要參數,這里參數可以是兩種形式:
@Value("#{configProperties['t1.msgname']}")
或者
@Value("${t1.msgname}");
這兩形式,在配置上有什么區別:
1、@Value("#{configProperties['t1.msgname']}")這種形式的配置中有“configProperties”,其實它指定的是配置文件的加載對象:配置如下:
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="locations"> <list> <value>classpath:/config/t1.properties</value> </list> </property> </bean>
這樣配置就可完成對屬性的具體注入;
2、@Value("${t1.msgname}")這種形式不需要指定具體加載對象,這時候需要一個關鍵的對象來完成PreferencesPlaceholderConfigurer,
這個對象的配置可以利用上面配置1中的配置,也可以自己直接自定配置文件路徑。
如果使用配置1中的配置,可以寫成如下情況:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"> <property name="properties" ref="configProperties"/> </bean>
如果直接指定配置文件的話,可以寫成如下情況:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"> <property name="location"> <value>config/t1.properties</value> </property> </bean>
二、用法
Spring 通過注解獲取*.porperties文件的內容,除了xml配置外,還可以通過@value方式來獲取。
使用方式必須在當前類使用@Component,xml文件內配置的是通過pakage掃描方式,
例如:<context:component-scan base-package="pakage_name" />
參考: