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

Spring 框架快速入門 (1):核心架構、IOC 容器與 AOP 基礎

     編輯:Java 程式設計入門

Spring 是什麼?

Spring 是開源框架,旨在解決企業級應用開發複雜性。核心優勢:**分層架構**——可按需選擇組件,同時為 J2EE 開發提供整合框架。

Spring 七大模組架構

Spring 框架七大模組架構圖
圖 1:Spring 框架七大模組(核心容器為基石)
模組核心職責關鍵組件/特性
核心容器Bean 生命週期管理、依賴注入BeanFactory (工廠模式)、ApplicationContext、IOC/DI
Spring Context框架級上下文服務JNDI、EJB、郵件、國際化、驗證、排程
Spring AOP面向切面程式設計聲明式事務、切點/通知/切面、無需 EJB 即可實現事務管理
Spring DAOJDBC 抽象與異常層次DataAccessException 體系、簡化連接開關、統一異常處理
Spring ORMORM 框架整合JDO、Hibernate、iBATIS SQL Maps、統一事務/DAO 異常層次
Spring WebWeb 應用上下文Struts 整合、multipart 解析、請求參數綁定到領域物件
Spring MVC全功能 Web MVC 框架策略介面高度可配置、支援 JSP/Velocity/Tiles/iText/POI 等視圖技術

每個模組可獨立使用或組合使用。核心理念:**支援不綁定特定 J2EE 服務的可重用業務/資料訪問物件**,可在 Web/EJB/獨立應用/測試環境間無縫遷移。

IOC (控制反轉) / DI (依賴注入) 核心概念

基本思想: 不在代碼中直接 new 物件,而是在配置文件中描述「誰需要誰」,由 IOC 容器負責實例化、裝配、管理生命週期。

典型 IOC 場景

  1. 容器建立所有 Bean 實例
  2. 注入必要屬性/引用完成裝配
  3. 決定何時調用初始化/銷毀回調方法

實現模式對比

模式描述優點缺點
Setter 注入無參構造器 + setter 方法直觀、可選依賴、可重新配置構造後物件可能未完全初始化
構造器注入帶參構造器強制依賴不可變性、強制完整性、循環依賴易檢測參數多時簽名複雜
介面注入實現特定介面由容器注入低耦合侵入性強、已淘汰

XML 配置範例

<beans>
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="username" value="root"/>
    <property name="password" value="secret"/>
  </bean>

  <bean id="userDao" class="com.example.UserDaoImpl">
    <property name="dataSource" ref="dataSource"/>
  </bean>

  <bean id="userService" class="com.example.UserServiceImpl">
    <property name="userDao" ref="userDao"/>
  </bean>
</beans>

Java 配置範例 (Spring 3.0+)

@Configuration
@ComponentScan("com.example")
public class AppConfig {
    @Bean
    public DataSource dataSource() {
        BasicDataSource ds = new BasicDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/mydb");
        ds.setUsername("root");
        ds.setPassword("secret");
        return ds;
    }
}

AOP (面向切面程式設計) 基礎

核心術語

  • 切面: 橫切關注點模組化(如事務、日誌、安全、快取)。
  • 連接點: 程式執行中可插入切面的點(方法調用、異常拋出、欄位存取)。
  • 切點: 選擇哪些連接點被織入(表達式匹配)。
  • 通知: 在切點執行的動作(前置、後置、環繞、異常、最終)。
  • 織入: 將切面應用到目標物件的過程(編譯期/類載入期/運行期)。

Spring AOP 實現方式

  • 基於 JDK 動態代理(介面代理)
  • 基於 CGLIB(類代理,繼承目標類)
  • 運行期織入,無需特殊編譯器

聲明式事務範例

<tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
    <tx:method name="get*" read-only="true"/>
    <tx:method name="*"/>
  </tx:attributes>
</tx:advice>

<aop:config>
  <aop:pointcut id="serviceOps" expression="execution(* com.example.service.*.*(..))"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOps"/>
</aop:config>

無需 EJB 即可獲得企業級聲明式事務管理。

系列預告

第二部分:深入 IOC 容器進階特性(Bean 作用域、生命週期回調、FactoryBean、Aware 接口、事件發布、資源抽象)。
第三部分:Spring AOP 進階(@AspectJ 註解風格、切點表達式詳解、事務傳播行為、異常處理切面)。

總結

Spring 以 IOC 容器管理物件生命週期、DI 實現鬆耦合、AOP 模組化橫切關注點 三大支柱,重新定義了 Java 企業級開發範式。掌握七大模組職責、XML/Java 雙配置風格、Setter/構造器注入選型、AOP 核心術語與聲明式事務配置,即可踏上 Spring 實戰之路。

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