配置資源文件


直接在 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM