我看過一些關於Spring MVC
和Portlets
的帖子,建議不要使用字段注入。因爲我試圖得到一個所以我問自己,如果我使用現場注入,我無法回答它。據我瞭解領域注入是,如果你注入一個Bean
成屬性與@Autowired
這樣的:什麼是野外注射以及如何避免它?
CartController.java:
...
@Autowired
private Cart cart;
...
BookshopConfiguartion.java:
@Configuration
public class BookShopConfiguration {
@Bean
public Cart cart(){
return new Cart();
}
//more configuration
我的Cart.java
用於存儲和提供有關購物車中的書。
在我的研究,我讀到構造函數注入:
MyComponent.java:
...
public class MyComponent{
private Cart cart;
@Autowired
public MyComponent(Cart cart){
this.cart = cart;
}
...
有什麼優點和這兩種類型的注射的的缺點是什麼?
編輯1:由於這個問題被標記爲this question重複我檢查。因爲在問題和答案中都沒有任何代碼示例,所以我不清楚我是否正確猜測了我正在使用哪種注入類型。
這是一般不好的想法,並不好,告訴世界「應該避免現場注射」。顯示優點和反對意見,讓其他人自己決定;)許多人有其他經驗和自己的看待事物的方式。 – dit
這裏可能就是這種情況,但還有其他一些情況是,社區已經達成普遍共識來勸阻某些事情。以匈牙利符號爲例。 – Jannik
作爲可測試性和依賴關係可見性,您提供了一些優點,但我並不完全同意。構造函數注入沒有缺點?有5個或6個字段注入課堂上執行真正的呼叫組合是可取的。我不同意你的不變性。擁有最終字段並不是必須具有不可變的類。這是優選的。這是非常不同的。 – davidxxx