先看看工做目錄,而後再來說解 java
一、創建config.properties,個人config.properties內容以下: spring
author_name=luolin project_info=該項目主要是用於寫一些demo
<!-- 使用註解注入properties中的值 --> <bean id="setting" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="locations"> <list> <value>classpath:config.properties</value> </list> </property> <!-- 設置編碼格式 --> <property name="fileEncoding" value="UTF-8"></property> </bean>
這裏說明一下,在使用@Value 註解的時候,其內部的格式是#{beanID[propertyKey]},這裏的beanID是在第二步中配置PropertiesFactoryBean的時候指定的id值,propertyKey是和config.properties中的key對應。 spring-mvc
/** * */ package com.eya.property; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * config.properties文件映射類 * @author luolin * * @version $id:ConfigProperty.java,v 0.1 2015年8月7日 下午2:10:44 luolin Exp $ */ @Component("configProperty") public class ConfigProperty { /** 做者名字 */ @Value("#{setting[author_name]}") private String authorName; /** 項目信息 */ @Value("#{setting[project_info]}") private String projectInfo; /** * @return the authorName */ public String getAuthorName() { return authorName; } /** * @param authorName the authorName to set */ public void setAuthorName(String authorName) { this.authorName = authorName; } /** * @return the projectInfo */ public String getProjectInfo() { return projectInfo; } /** * @param projectInfo the projectInfo to set */ public void setProjectInfo(String projectInfo) { this.projectInfo = projectInfo; } }
四、編寫單元測試,測試是否注入成功。這裏用的是Junit4 + Spring註解的方式,當作是練習。 mvc
/** * */ package com.eya.property; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * JUnit4 + Spring 註解進行單元測試,測試經過Spring註解得到Properties文件的值 * @author luolin * * @version $id:ConfigPropertyTest.java,v 0.1 2015年8月7日 下午2:21:26 luolin Exp $ */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:spring-mvc.xml","classpath:spring-context.xml"}) public class ConfigPropertyTest { @Resource(name = "configProperty") private ConfigProperty configProperty; /** * 測試Spring註解獲取properties文件的值 */ @Test public void test() { System.out.println(configProperty.getAuthorName()); System.out.println(configProperty.getProjectInfo()); } }
期間出現了亂碼的問題,因爲我把config.properties的編碼改爲了UTF-8,開始沒有在配置Spring文件的時候指定編碼,因此亂碼了,後來我看了下PropertiesFactoryBean的源代碼,在它的父類中找到了設置編碼的屬性,設置成對應的編碼就能夠了。 單元測試