0

* -servlet.xml

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

    <context:property-placeholder location="classpath*:spring.properties" />
    <context:component-scan base-package="com.my.path" />

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

com.my.path.MyController

@Controller
public class MyController {

    @Value("${my.property}")
    private String myProperty;

    @RequestMapping("/my/path")
    public String default(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
            throws Exception {

        // Any reference to myProperty above is null...

        return "view";
    }
}

我在我的 servlet 上下文中确实有其他由 ID 定义的 bean,它们使用我试图通过 Value 注释添加到我的控制器的相同系统属性。我知道他们存在并且具有正确的价值观。所以我不确定为什么我不能让注释工作。

4

2 回答 2

0

在审查了几乎所有教程之后,我意识到这一定是某种类加载器问题。所以我回顾了我的打包结构,它是一个包含 WAR 的 EAR。果然我有两个相同版本的 spring bean jar,一个在 EAR/lib 中,另一个在 WAR/WEB-INF/lib 中。显然,这些属性是在 EAR 中获取的,但是后处理是在 WAR(或类似的东西)中进行的。因此,通过将其整理出来,并从 WAR 中获取重复的 JAR,它现在已得到修复。

于 2013-05-31T15:33:12.073 回答
0

看看这个答案。你碰巧有更多的 XML Spring 上下文吗?如上所示,是否component-scan在相同的 Spring 配置中定义?property-placeholder

于 2013-05-30T21:12:21.990 回答