我已经配置了属性文件的加载,如下所示(Spring 3.1)
我的弹簧 XML
<context:component-scan base-package="com.mypackage"/>
<context:property-placeholder location="file:///C:/temp/application.properties"/>
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/my-spring-xml
</param-value>
</context-param>
应用程序属性
expirationOffset = 777
在我的 java 类中,我声明了如下属性:
private @Value("${expirationOffset}") String propertyValue;
由于某种原因,该值没有被初始化。当我运行以下语句时:
System.out.println("VALUE - " + propertyValue);
输出总是
16:03:02,355 INFO [stdout] (http--127.0.0.1-8080-1) VALUE - ${expirationOffset}
我试图将属性文件移动到war文件中以尝试在它位于类路径中时访问它,但仍然是同样的问题。这是我从类路径访问它的方式。
<context:property-placeholder location="classpath:/conf/application.properties"/>
理想情况下,我希望将属性文件保留在 war 文件之外,因为我不想因为简单的属性更改而不得不重建 war 文件。
我错过了什么吗?
编辑
我从这个上下文中删除了 msm-spring.xml 初始化参数:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/my-spring-xml
</param-value>
</context-param>
并将其移至 servlet 上下文,如下所示。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>myservice</servlet-name>
<servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/my-spring-xml
</param-value>
</init-param>
</servlet>
上述更改似乎已经修复,因为我现在得到了正确的值。我认为我最初的方式是将它放在应用程序上下文中,这意味着它将在整个应用程序/webapp 中可用。
在上面列出的 3 个中使用 msm-spring 有什么区别?