依賴註入(Dependency Injection)和控制反轉(Inversion of Control)是同一個概念。具體含義是:當某個角色(可能是一個Java實例,調用者)需要另一個角色(另一個Java實例,被調用者)的協助時,在 傳統的程序設計過程中,通常由調用者來創建被調用者的實例。但在Spring裡,創建被調用者的工作不再由調用者來完成,因此稱為控制反轉;創建被調用者實例的工作通常由Spring容器來完成,然後註入調用者,因此也稱為依賴註入。
使用Spring的好處
1. 降低組件間的耦合性;
原來
class UserService{
UserDao udao=new UserDaoImpl();
}
使用Spring,隻需要註入屬性
class UserService{
private UserDao udao;
public void setUdao(UserDao udao){
this.udao=udao;
}
public UserDao getUdao(){
return udao;
}
}
2. Spring提供多種服務支持,如事務、jms服務,但使用事務管理時,開發人員不需要手動控制事務;
3. 提供單態模式
4. 提供AOP機制,利用它容易實現權限攔截、運行前監控等
5. 對主流框架提供支持