之前問過類似的問題
大概知道了autowired的好處
比如說
Spring @Autowired 搭配 @Qualifier 指定注入的Bean
重點在 依賴於介面 而不依賴於實作
這樣抽換的時候就會方便很多
但是還是有一個地方不太懂
就是說如果有層層的依賴關係的話
沒有autowired就會出現 一層層的new 建構子出現
但是我自己舉了幾個例子
並沒有出現一層層 new的建構子
之前軟體版有人回答過我,但是那連結已經失效了QQ
假設Service1 依賴於 Dao1 ,Dao1又依賴於Dao11和Dao22好了
以下是我的測試CODE
1. Dao11
public class Dao11 {
public void sayhi() {
System.out.println("hi");
}
}
2.Dao22
public class Dao22 {
public void sayhi2() {
System.out.println("hi fomr dao22");
}
}
3. Dao1
public class Dao1 {
// private Dao11 dao11;
Dao11 dao11=new Dao11();
Dao22 dao22=new Dao22();
public void sayhifromDao1() {
dao11.sayhi();
dao22.sayhi2();
}
}
4. Service1
public class Service1 {
Dao1 dao1=new Dao1( );
public void sasdf() {
dao1.sayhifromDao1();
}
}
5. Main Class
public class MainDriver {
public static void main(String[] args) {
Service1 service=new Service1();
service.sasdf();
}
}
我的疑惑是不管我的Service依賴了幾層東西
最後都是非常乾淨清爽的
一行 new Service1 ();
並且是空的建構子,就可以做到
那這樣就我的理解,是不是只要我沒有宣告
field在class裡面
意思就是我沒有宣告
// private Dao11 dao11; 在Dao1 裡面
不管我的Service1 依賴多少東西 ,最後都可以用空的建構子new出來
並且保證功能正常運行
第二個問題是
怎麼樣造出那些
真的會有需要 層層 new的例子
這方面想不太出來
謝謝JAVA版
這幾天又一直瘋狂糾結這件事....