我正在使用 Spring MVC。在 Controller 类中,我想使用 @Value 注释来注入来自属性文件的值:
@Value("${upload.dir}")
private String uploadDir;
所以我需要在某个地方放置一个属性占位符。
web.xml 是典型的:
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/mvc-dispatcher-servlet.xml</param-value>
</init-param>
...
</servlet>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/business-context.xml</param-value>
</context-param>
首先,我将占位符放在 business-context.xml 中。它不起作用:“无法自动装配字段”。
然后我把它放在 mvc-dispatcher-servlet.xml 中,它就可以工作了。
所以我对这两种情况感到困惑,它们是相同的还是不同的?因为我在 business-content.xml 中定义的 bean 可以自动装配,但 @Value 不起作用。
我不想将占位符放在两个 xml 文件中,因为我有一个很长的“位置”属性。还有一些作业会用到business-context.xml,所以不能省略。
有什么方法可以让 business-context.xml 中定义的占位符在 mvc-dispatcher-servlet.xml 中也可见?