2011-05-05 113 views
3

对于使用弹簧请求范围 bean是这个定义是否正确?定义Spring请求范围bean

<bean id="shoppingCart" class="ShoppingCart" scope="request"> 
<!-- This requires CGLIB --> 
<aop:scoped-proxy/> 
</bean> 

我修改这从会话范围 bean的实例,并且只更改了范围界定,不知道有关代理的事情

我从这个链接这个例子中,你可以看到完整的XML :

http://wheelersoftware.com/articles/spring-session-scoped-beans-2.html

+0

为什么你需要它是一个代理? – Bozho 2011-05-05 08:57:39

+0

我发布了链接 – Spring 2011-05-05 08:59:59

回答

5

一般 - 是的,这是正确的。

如果对于每个请求您直接从BeanFactory中检索请求作用域bean,那么您不需要代理。

但你需要代理,如果你打算使用要求soped bean作为depenedncy独居范围的bean,比如像这样:

@Controller 
public class MyController { 

    @Autowired 
    private ShoppingCart shoppingCart; 
} 

约作用域bean的详细信息请参见本reference页。

作为一个附注我建议尽可能使用标准的基于JDK接口的poxies而不是CGLIB。更多关于代理弹簧可以在documentation找到。

+0

谢谢,所以在我的stateles web服务中,我需要一个类来保存客户信息变量,并保存并处理它们,只是为了这个请求,使用bean factory是一个很好的方法吗?而且我将依赖于以前的结构,或者我可以在Spring中随时创建和使用一个bean工厂?那么我的最终XML定义将如下所示? Spring 2011-05-05 12:05:49

+1

您不在Spring中创建BeanFactory - 框架会这样做,因为ApplicationContext **是BeanFactory。而且,aby Spring托管bean可以实现BeanFactoryAware或@Autowire BeanFactory,甚至可以实现整个ApplicationContext,但是这会将您绑定到Spring API,因此最好只使用@Autowire bean而不是@Autowering BeanFactory,然后从中重新获取bean 。 – Roadrunner 2011-05-06 07:44:29