我對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