直接在 spring 配置文件里面加上
<context:property-placeholder file-encoding="UTF-8" location="classpath*:application.properties,classpath*:resource.properties,classpath*:memcached.properties,classpath:sys.properties" ignore-resource-not-found="true" />
這樣就能在配置數據源的時候這樣子
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!-- Connection Info --> <property name="driverClassName" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- Connection Pooling Info --> <property name="initialSize" value="${dbcp.initSize}" /> <property name="maxIdle" value="${dbcp.maxIdle}"/> <property name="maxActive" value="${dbcp.maxActive}"/> <property name="defaultAutoCommit" value="false"/> <property name="timeBetweenEvictionRunsMillis" value="3600000"/> <property name="minEvictableIdleTimeMillis" value="3600000"/> </bean>
同時也可以在代碼里面這樣獲取
@Value("${jdbc.driver}") String jdbcdriver;
當然如果用 @Value 注解獲取屬性的話,你的類也必須是spring注入管理的。
如果用了SpringMVC,而且你在controller里面用 @Value 獲取不到屬性值的話,應該在SpringMVC配置文件里面也加上上面的配置!
因為在使用spring mvc時,實際上是兩個spring容器:
1,dispatcher-servlet.xml 是一個,我們的controller就在這里,所以這個里面也需要注入屬性文件
org.springframework.web.servlet.DispatcherServlet
這里最終是使用
WebApplicationContext parent =WebApplicationContextUtils.getWebApplicationContext(getServletContext());
創建spring容器,代碼在FrameworkServlet中
2,applicationContext.xml 是另外一個,也需要注入屬性文件
org.springframework.web.context.ContextLoaderListener
在我們的service中可以拿到@Value注入的值,那是因為我們通常都會把獲取屬性文件定義在applicationContext.xml中,這樣在 Controller中是取不到的,必須在dispatcher-servlet.xml 中把獲取屬性文件再定義一下
具體看這里吧 http://blog.csdn.net/sunhuwh/article/details/15813103