将Spring原型范围用于服务外观和层

时间:2011-08-17 16:16:13

标签: spring web-applications java-ee spring-mvc

我想更好地了解如何以及何时在Spring中使用原型范围。似乎与EJB世界中的无状态会话bean的处理方式类似(尽管EJB容器会从无状态会话bean池中释放一个实例,而不是按需创建新实例)。

我有几个基本问​​题:

1)从架构的角度来看,何时在典型的J2EE Web应用程序(Spring MVC / Hibernate或JDBC模板数据库访问)中使用原型范围的bean是有意义的?

2)是否存在创建此类原型实例池的概念,类似于EJB服务器对无状态会话Bean执行的池化?

3)是否应该使用原型范围创建服务外观(类似于EJB中的Session Facade),这有助于处理来自Web层的并发请求吗?如何控制创建的实例数量(限制为某些可管理的数量,最好是将它们汇集起来)?

1 个答案:

答案 0 :(得分:1)

假设您的服务是无国籍的,您会希望单身人士获得服务。这样你每个服务只有一个实例,因为它们是无状态的,所以它们是线程安全的。

您需要原型来处理请求操作(例如在struts中),因此会创建一个新对象来处理每个请求。这些原型可以连接到单件服务。

来自documentation

  

非单例,bean部署的原型范围导致了   每次请求特定时,都会创建一个新的bean实例   豆是制作的。也就是说,bean被注入另一个bean或你   通过对容器的getBean()方法调用来请求它。作为一个   规则,使用所有有状态bean和单例的原型范围   无状态豆的范围。

相关问题