IoC + DI + @Component + bean + @Autowired
主要內容
Spring IoC 名詞
- IoC Inversion of Controll ,控制反轉
- DI dependency Injection ,依賴注入
- Bean 存放在Spring Container裡面的object
- @Component 加在class上 ,將改class變成Spring容器所管理的bean
- @Autowired 加在變數上 ,取得Spring容器中的bean
IoC (Inversion of Controll 控制反轉)
使用java的概念
Interface 介面
Polymorphism 多型
public class HpPrinter implements Printer{
@Override
public void print(String msg){
System.out.println("HP印表機: " + msg );
}
}
public class Teacher{
private Printer printer = new HpPrinter();
public void teach(){
printer.print("I'm a teacher");
}
}
public class Student{
private Printer printer = new HpPrinter();
public void learn(){
printer.print("I'm a student");
}
}
public class CanonPrinter implements Printer{
@Override
public void print(String msg){
System.out.println("Canon印表機: " + msg );
}
}
每換一個牌子就需要把有使用到印表機的部分都改一遍
所以!
我們改成只定義一個Printer的變數
但不會new 印表機給他 ,
程式運行Spring啟動Spring 容器(Container) 由Spring 創建印表機 ,存放在 Spring Container
老師跟學生不需要知道印表機廠牌是什麼 ,只需要有一台印表機可以使用就好了