3

我曾经在 XML 中定义了以下 bean(它有效!):

<bean id="session"  class="mrpomario.springcore.bean_scopes.beans.SessionBean" scope="session">
<aop:scoped-proxy/>
</bean>

现在我尝试通过 Java 完成相同的配置:

    @Bean
    @Scope("session")
    @ScopedProxy
    public SessionBean session() {
        return new SessionBean();
    }

我收到以下错误...

java.lang.IllegalStateException: No Scope registered for scope 'session'

...当我session()作为另一个 bean 中的 setter 的参数调用时。

为什么会发生这种情况,我该如何解决?

4

1 回答 1

2

@ScopedProxy不是 Spring 的 Java 配置的一部分。解决方案在参考手册中proxyMode-使用@Scope注释:

@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public SessionBean session() {
    return new SessionBean();
}
于 2012-09-05T22:56:21.640 回答