很多時候需要將配置信息從程序中剝離粗來,Spring現在提供的方法是通過@Value
註解和<context:placeholder>
來獲取配置文件中的配置信息。這裏給出一個簡單的例子。
首先在resources文件夾下簡歷配置文件spring.biz.properties,文件內容爲:
dataId=test
versionId=1.0.1.daily
然後在xml文件中讀入該屬性值,spring-config.xml文件的內容如下:
<context:property-placeholder location="classpath:spirng.biz.properties"/>
第三步是定義需要這些屬性的類,要使用註解必須在xml文件中打開註解驅動,代碼爲:<context:annotation-config/>
。@Value註解中使用${key}取出key對應的value。TestConfig.java的內容爲如下。
package com.javadu.core;
import org.springframework.beans.factory.annotation.Value;
/**
* Created by duqi on 15/9/14.
*/
public class TestConfig {
@Value("${dataId}")
private String dataId;
@Value("${versionId}")
private String versionId;
private String other;
public void setOther(String other){
this.other = other;
}
public String getDataId(){
return dataId;
}
public String getVersionId(){
return versionId;
}
}
在xml文件中定義TestConfig對應的bean,完整的spring-config.xml文件內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
<context:property-placeholder location="classpath:spirng.biz.properties"/>
<bean id="configBean" class="com.javadu.core.TestConfig">
<property name="other" value="otherother"/>
</bean>
</beans>
最後,在App.java類中:啓動IoC容器,獲取TestBean的實例,調用其開放的接口,代碼如下:
package com.javadu.common;
import com.javadu.core.TestConfig;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by duqi on 15/9/8.
*/
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
TestConfig configBean = (TestConfig)context.getBean("configBean");
System.out.println(configBean.getDataId());
System.out.println(configBean.getVersionId());
}
}
最後的運行結果如下: