弹簧原型范围 - 用例?

2022-09-01 01:39:42

我对春豆的各种范围有清晰的了解。但是我正在寻找企业级项目中Bean原型范围的一些用例。如果您可以分享一些原型范围(而不是请求范围)的真实用例,那就太好了。


答案 1

作为以前在SpringSource工作过并与开发人员就此主题进行过交谈的人。这是我的看法。Prototype非常适合测试,因此名称为原型,而不是创建新的或每次从Spring容器请求Bean的新实例时都有更多的描述。

多年来,我还发现,在任何现实世界的生产应用中,原型在任何地方都毫无意义。如果你的对象保持状态,它通常不应该是一个Spring Bean。在我工作过的所有应用程序中,我发现所有bean都是服务,存储库和单例非状态保存对象,我需要添加诸如事务性,JPA,JMS之类的功能,这些功能为我们提供了POJO所没有的企业功能。

我的系统中保持状态的对象可能是我的实体和视图DTO,或者其他对成为Spring Bean没有意义的东西。因此,在我的生产应用程序中,没有一个“原型”豆。


答案 2

我使用原型Bean来声明配置的表单元素(配置为验证名称,例如电子邮件地址的文本框),并为在我的Webapp中创建的每个表单获取它们的“活”实例。细节并不重要,重要的是原则,我会这样总结:

  • 有一个类具有许多配置参数
  • 您需要使用一组预定义的配置(fancy1,fancy2,stc)创建它的实例。
  • 可以考虑将 一种工厂方法,用于在 xml 中创建预配置的实例applicationContext.getBean("myBeanConfiguredFancy1")

推荐