簡體   English   中英

CDI豆注射液

[英]CDI beans injection

這是在@SessionScoped bean中注入@ApplicationScoped bean的正確方法嗎? 這會導致我的應用程序范圍的bean被存儲在每個用戶的會話中嗎?

我有一個應用程序范圍的Bean,其中包含我們在所有系統用戶之間共享的一些值,現在我需要在會話Bean的方法中獲取這些值。

像您提供的示例一樣,在JSF或CDI Bean中將相同或更大范圍的Bean注入另一個Bean中是完全合法和正確的。

CDI bean和JSF托管bean之間的區別在於,當您嘗試在另一個bean中注入范圍較窄的bean(例如,將@RequestScoped bean注入@SessionScoped一個)時,只有在使用CDI @Named才有可能@Named bean,但是在使用JSF @ManagedBean時無法@Named

CDI bean之所以可以做到這一點,與它們的Proxy Pattern機制有關,與JSF機制相比(它基於調用設置程序以便直接注入物理實例)比JSF機制更靈活。

這種代理機制允許CDI容器將引用傳遞給代理,而不是傳遞注入的Bean(除非Bean具有默認范圍@Dependent )。 因此,該代理將負責處理對注入的bean的所有調用,並將它們轉發/重定向到正確的bean實例。

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM