首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring Framework 核心原理與實戰入門:IOC、AOP、Bean 生命周期全解析

     編輯:Java 相關知識

Spring 核心特性

  • IOC(控制反轉):對象創建、依賴注入、生命周期管理移交容器
  • AOP(面向切面):橫切關注點(事務、日誌、安全)模塊化
  • 輕量級:核心 JAR 不足 2MB,無侵入式設計(POJO)

IOC 容器啟動與 Bean 獲取

// 1. Classpath 下載配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

// 2. 文件系統路徑
ApplicationContext ctx = new FileSystemXmlApplicationContext("D:/config/app.xml");

// 3. 多配置文件
new ClassPathXmlApplicationContext(new String[]{"dao.xml", "service.xml"});

// 4. 獲取 Bean
UserService service = ctx.getBean("userService", UserService.class);

Bean 定義與別名

<bean id="userService" class="com.example.UserServiceImpl"></bean>
<alias name="userService" alias="svc"/> <!-- 別名:ctx.getBean("svc") 同樣可獲取 -->

三種實例化方式

方式配置範例適用場景
構造器(無參)<bean id="a" class="A"/>90% 場景,標準 JavaBean
靜態工廠方法<bean id="b" class="Factory" factory-method="getInstance"/>單例、連接池、不可變對象
實例工廠方法<bean id="factory" class="FactoryImpl"/><bean id="c" factory-bean="factory" factory-method="create"/>複雜構建邏輯、第三方庫集成

Scope 作用域

Scope生命周期線程安全典型用途
singleton(默認)容器啟動~關閉,單實例共享需自行保證Service、DAO、工具類
prototype每次 getBean 新建,容器不管銷毀天然隔離有狀態對象、請求級對象
request單次 HTTP 請求請求隔離Web 控制器
session用戶會話會話隔離購物車、用戶偏好

Bean 生命周期回調

<bean id="demo" class="Demo" init-method="init" destroy-method="close" 
      lazy-init="true" scope="singleton"></bean>
class Demo {
    Demo() { println("1. 構造器") }
    void init() { println("2. 初始化回調") }
    void doWork() { println("3. 業務使用") }
    void close() { println("4. 銷毀回調") } // 僅 singleton 生效
}

執行順序:構造器 → 初始化 → 業務使用 → 銷毀(容器關閉)

lazy-init="true":延遲到首次 getBean 才實例化(原型無效)。

依賴注入(DI)三種方式

<bean id="service" class="UserServiceImpl">
  <!-- 1. 構造器注入 -->
  <constructor-arg ref="userDao"/>
  <constructor-arg value="default"/>
  
  <!-- 2. Setter 注入 -->
  <property name="userDao" ref="userDao"/>
  <property name="prefix" value="pre_"/>
  
  <!-- 3. P 命名空間簡寫 -->
  <!-- xmlns:p="https://www.springframework.org/schema/p" -->
  <!-- p:userDao-ref="userDao" p:prefix="pre_" -->
</bean>

自動裝配

<bean id="service" class="UserServiceImpl" autowire="byType"/>

Annotation 驅動(現代首選)

@ComponentScan("com.example")
@Configuration
public class AppConfig {}

@Service public class UserServiceImpl {
    @Autowired private UserDao userDao; // 構造器/Setter/字段均可
}

AOP 核心概念

術語說明
Joinpoint連接點:方法調用、異常拋出等
Pointcut切點:定義攔截哪些連接點(表達式)
Advice通知:Before/After/AfterReturning/AfterThrowing/Around
Aspect切面:Pointcut + Advice
Weaving織入:編譯期/類加載期/運行期

總結

Spring 核心在於「IOC 管理對象生命周期,DI 解耦依賴,AOP 分離橫切邏輯」。掌握 Bean 定義、作用域、生命周期、注入方式、自動裝配、Annotation 配置、AOP 基礎,即可上手企業級開發。現代項目推薦:全 Annotation + Java Config + Spring Boot 自動裝配,XML 僅用於整合第三方非 Spring 組件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved