在春天将会话范围应用于bean时出错

时间:2013-03-17 05:45:17

标签: java spring session spring-annotations

我尝试使用@Scope注释更改bean的范围。该bean实际上用作MessageSource并用于国际化目的。

mvc-dispacher-servlet.xml中的模式如下:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
     xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

控制台中描述的异常如下:

  

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Cannot locate BeanDefinitionParser for element [scoped-proxy]

2 个答案:

答案 0 :(得分:0)

确定。如果它是普通的bean,那么很可能你只是缺少scope标记的xml解析器。为了能够使用范围代理,您需要注册aop:scoped-proxy。

在SO上有一个类似的问题: Accessing a session-scoped bean inside a controller

结果是:

http://static.springsource.org/spring/docs/3.0.x/reference/beans.html#beans-factory-scopes-other-injection

否则你应该通过谷歌轻松找到关于这个主题的一些教程。

答案 1 :(得分:0)

您可能在bean之外有一个bean范围的选项(我犯了这样的错误,并收到了像您一样的msg错误):

<beans>
...
<aop:config proxy-target-class="true"/>
<aop:scoped-proxy proxy-target-class="true"/>
<aop:aspectj-autoproxy proxy-target-class="true"/>
...

只需将这个选项放在bean声明中:

<bean ... target="step">
    <aop:scoped-proxy proxy-target-class="true"/>
</bean>

还有一件事-我只对作用域内的bean出现了这种错误。