我正在使用CDI 1.0的焊接實現,我無法找到如何讓Spring像Spring一樣懶惰的方式(在XML中使用@Lazy
或lazy-init
)。有沒有辦法告訴CDI的Injector
不要在啓動時初始化bean?如何讓CDI Bean懶惰地初始化?
回答
不,這在CDI中是不可能的。您可以得到的最接近的方法是創建一個新的InjectionPoint(使用擴展)實現,該實現提供了一個代理,並且該代理將初始化第一個方法調用中的所有內容。
所以,通過使用@Inject Instance
恩,我的第一反應就是說可能有效。雖然如果您使用的是CDI 1.0實現,但實例會泄漏依賴範圍實例的內存。 – LightGuard
你在說什麼實現?你的參考在哪裏? –
見我的回答是:http://www.adam-bien.com/roller/abien/entry/lazy_injection_with_javax_inject
使用
@Inject
Instance<MyObject> object;
僅在需要時豆初始化......這不就是你想要什麼?
[根據亞當Bien](http://www.adam-bien.com/roller/abien/entry),有一個替代方案是,_might_可以更輕一些:只是注入一個'Provider >'而不是'Instance >',其餘的都是一樣的。 –
@HeinBlödAdam Bien的博客中的條目鏈接已更改爲[Lazy Injection with javax.inject.Provider](http://www.adam-bien.com/roller/abien/entry/lazy_injection_with_javax_inject)。 – ltlBeBoy
更新了答案,謝謝 –
如果您注入的bean處於正常範圍(@SessionScoped,@RequestScoped等),它將被延遲實例化。您在客戶端bean中獲得的是一個代理,它在第一次調用代理上的方法之前不會指向具體實例。
正如其他人已經指出的,@Inject Instance<MyBean> myBeanInstance;
也可以用來建立一個明確的懶惰實例。
- 1. 休眠懶惰初始化 - 未能懶惰地初始化集合
- 2. Spring bean懶初始化
- 3. 懶惰初始化注入bean依賴關係(Spring 3)
- 4. 如何懶惰地執行初始化器?
- 5. 懶惰初始化不起作用iPhone
- 6. 懶惰初始化,ORM和lambdas
- 7. 懶惰的初始化和deinit
- 8. 奇怪的懶惰初始化異常
- 9. JPA Hibernate JAXB懶惰初始化
- 10. 記憶與懶惰初始化/評估
- 11. Nhibernate-懶惰加載初始化失敗
- 12. Hibernate懶惰初始化例外與@Transactional
- 13. 多線程懶惰初始化
- 14. 休眠懶惰加載和初始化
- 15. C#懶惰初始化&&比賽初始化?
- 16. 初始化CDI Bean名稱不明確
- 17. 在Spring Map中懶洋初始化bean
- 18. NHibernate:「未能懶惰地初始化...」,DDD方法
- 19. Hibernate LazyInitializationException:未能懶惰地初始化一個角色集合
- 20. Hibernate org.hibernate.LazyInitializationException:未能懶惰地初始化一個角色集合:
- 21. 我該如何懶惰初始化一個NSMutableArray?
- 22. 如何正確初始化通過實體的懶惰收集?
- 23. Java Swing JTree TreeModel - 如何做懶惰的初始化
- 24. 靜態本地POD常量是如何初始化的?懶惰或不?
- 25. 在懶惰的加載列表上調用size()時,懶惰地初始化一個集合
- 26. 懶惰<T>重新初始化方法?
- 27. 單身人士的懶惰初始化問題
- 28. 貓鼬和懶惰初始化屬性在正確的範圍
- 29. Spring初始化bean初始化
- 30. Grails和Hibernate的懶惰初始化異常
重複的http://stackoverflow.com/questions/15920758/java-ee-6-inject-lazy –