Spring 核心是 IOC(控制反轉)/ DI(依賴注入),簡單說:對象的創建與依賴關係管理由容器接管,開發者只需聲明需求,不再手動 new。
傳統模式:你想喝咖啡(A 依賴 B),得自己買咖啡機、磨豆、沖泡(A 自己創建並管理 B)。
Spring 模式:你告訴管家(容器)我要喝咖啡,管家負責準備好一切送到手邊(容器創建 B 並注入 A)。
// 傳統:強耦合,難測試,難替換實現
public class UserService {
private UserDao userDao = new UserDaoImpl(); // 寫死具體實現
public void addUser(User u) { userDao.save(u); }
}
// Spring:鬆耦合,面向接口編程
public class UserService {
private UserDao userDao; // 依賴接口
// Setter 注入
public void setUserDao(UserDao userDao) { this.userDao = userDao; }
public void addUser(User u) { userDao.save(u); }
}
// XML 配置(或 @Autowired/@Resource 註解)
<bean id="userDao" class="com.dao.UserDaoImpl" />
<bean id="userService" class="com.service.UserService">
<property name="userDao" ref="userDao" />
</bean>
ApplicationContext),負責實例化、注入、銷毀。@Autowired)。面向切面編程,將橫切關注點(事務、日誌、權限、緩存)從業務代碼中分離,通過動態代理在運行時織入。如 @Transactional 註解,Spring 在方法調用前後自動開啟/提交/回滾事務,無需在業務代碼中硬編碼。
掌握 IOC/DI 思想,Spring 配置不再是背誦標籤,而是理解「誰負責創建、誰負責調用、依賴關係怎麼建立」。