0
這是一個很好的練習問題......在抽象父類中注入常用的CDI beans
我們將JSF託管bean轉換爲JSF 2.2中的CDI bean。在做這件事的時候,似乎在很多豆子中,我們需要一些會話bean。
我們最初打算@Inject這些,但也可將其注入在父「FacesBean」類保護的變量。
- 這會是很好的做法?
- 不@Inject也是在尚未轉換爲CDI @ManagedBean類工作?
這是一個很好的練習問題......在抽象父類中注入常用的CDI beans
我們將JSF託管bean轉換爲JSF 2.2中的CDI bean。在做這件事的時候,似乎在很多豆子中,我們需要一些會話bean。
我們最初打算@Inject這些,但也可將其注入在父「FacesBean」類保護的變量。
於是一個接一個:
1)好的做法呢?
如果你有一個類層次結構,我建議你@Inject
成在父私人字段,然後創建一個最小能見度需要(可能保護)getter方法。只要堅持圍繞Java封裝的一般良好實踐規則即可。
2)@ManagedBean
和@Inject
?
只要你使用bean發現模式all
(使用空beans.xml
),你的類將被自動拾取作爲託管豆 - 包括那些@ManagedBean
註解。一旦它是一個豆,注射就起作用。所以是的,只要這個類可以自動成爲一個bean(例如,它不是@Vetoed
或不可處理的等等),注入將會工作。
事情是,用一個getter聲明一個私有注入變量,爲開發人員敞開大門。仍然在子類中再次注入相同的變量。我們接着注射兩次嗎? –
嗯,我沒有看到如何注入一個受保護的領域,防止開發人員做出完全相同的錯誤 - 但如果你覺得它更好,去做它,它應該工作。爲了回答上面的問題,你會有兩個注入點,因此是的,你會注入兩次(但除非它是'@ Dependent',你實際上只會注入一個代理對象,指向相同的bean底層實例* )。 – Siliarus