我对Spring beans的各个范围有清晰的认识。但是我正在寻找一些bean在企业级项目中的原型范围的用例。如果您可以分享原型范围(而不是请求范围)的一些真实生活用例,那就太好了。Spring原型范围 - 用例?
回答
我使用的原型主要是与弹簧lookup-method
一起使用。我的应用程序是game server,需要在tcp端口解码传入字节。考虑下面bean定义
<bean id="channelBufferProtocol" class="org.menacheri.protocols.impl.ChannelBufferProtocol">
<lookup-method name="createLengthBasedFrameDecoder" bean="lengthFieldBasedFrameDecoder"/>
<property name="eventDecoder" ref="eventDecoder"></property>
<property name="lengthFieldPrepender" ref="lengthFieldPrepender"></property>
<property name="eventEncoder" ref="eventEncoder"></property>
</bean>
里面的协议实现类,我有以下代码来创建帧解码器pipeline.addLast("lengthDecoder", createLengthBasedFrameDecoder());
当调用该方法,春天就会创建一个新的帧解码器的实例并返回它。
由bean="lengthFieldBasedFrameDecoder"
返回的bean需要是范围prototype
,因为它是我的应用程序中的有状态bean。
注意:协议只不过是一组链接在一起的特定解码器和编码器。 “责任链”设计模式。
这个查找方法由Spring doc解释:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans。 html#beans-factory-method-injection – 2015-04-07 05:59:45
我用原型bean来声明配置的表单元素(配置为验证名称,例如电子邮件地址的文本框),并为我在webapp中创建的每个表单获取它们的“活”实例。细节并不重要,重要的原则,我会总结是这样的:
- 有是有很多的配置参数
- 您需要创建它的实例与一组预定义配置的一类(fancy1 ,fancy2,STC)
- 认为
applicationContext.getBean("myBeanConfiguredFancy1")
作为一种工厂方法的作为XML
我们可以在模型类的情况下使用原型范围预先创建的实例(也CA因为应用程序需要为每个线程/请求提供不同的模型类实例。
那么它不应该是请求作用域而不是原型作用域? – 2017-01-14 14:03:05
作为以前曾在SpringSource工作并与开发人员讨论过这个主题的人。这是我的要求。 Prototype非常适合用于测试事物,因此名称原型并不是创建新的或更多的描述,每次从Spring容器请求它时创建bean的新实例。
多年来,我也发现在我的使用中,我不能在任何其他地方的原型在任何真实世界的生产应用中都有意义。如果你的对象持有状态,它通常不应该是一个Spring bean。我在所有应用程序中发现,所有的bean都是Services,Repositories和Singleton非状态持有对象,我需要添加诸如事务性,JPA,JMS之类的功能,这些功能为我们提供了POJO不需要的企业功能,没有。
我的系统中保持状态的对象可能是我的实体和视图DTO,或者其他一些没有意义成为Spring Bean的东西。因此,在我的生产应用程序中,没有一个“原型”bean。
- 1. Spring bean范围:singleton和原型
- 2. JavaScript原型范围问题
- 3. 我可以使用Spring Javaconfig创建原型范围的bean吗?
- 4. 在Spring中,如何用原型范围声明一个bean?
- 5. 使用原型范围和Spring服务门面和层次
- 6. 春豆范围原型
- 7. 原型和Ajax.Request范围
- 8. Javascript /原型范围混乱
- 9. 原型,范围和承诺
- 10. 标有原型范围的Bean不在Spring中工作
- 11. 如何动态注入spring bean(原型范围)
- 12. Spring如何从ProxyFactoryBean中获取具有原型范围的bean
- 13. 如何执行Spring beans的原型范围
- 14. Symfony2 ScopeCrossingInjectionException在使用原型范围时
- 15. Spring:如何干净地终止原型范围的bean?
- 16. 数据源是否需要在spring的原型范围内jdbc
- 17. 原型范围的自定义Spring Sterotype注释?
- 18. 如何测试一个具有原型范围的spring bean?
- 19. Spring中Singleton范围Bean的实例
- 20. AnnotationSessionFactoryBean和单例范围bean(Spring框架)
- 21. Spring数据Solr构面范围示例?
- 22. Javascript对象原型掉出范围
- 23. 这个范围,箭头函数原型
- 24. Spring ApplicationContext Bean范围
- 25. Javascript嵌套的原型方法范围
- 26. 原型覆盖范围问题
- 27. 引擎盖下的原型范围bean的弹出实例化
- 28. JavaScript的嵌套函数原型范围
- 29. 疑难解答原型类的范围
- 30. 原型和async.forEach的范围问题
我很惊讶这个没有代码的简短问题,没有被标记为不具有建设性,太宽泛。不要误解我的意思,我认为这个问题很好 – 2015-11-16 14:19:36