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

Apache Geronimo 與 Spring 框架實戰(一):Spring 架構七大模組與核心方法論

     編輯:Java 相關知識

本系列首篇,介紹 Spring 框架整體架構、七大核心模組、控制反轉(IoC)核心模式,以及 Spring 與 Apache Geronimo 為何能完美互補。為後續實戰教程奠定理論基礎。

Spring 框架總覽

Spring 不僅處理 Web 層(如 Struts),更涵蓋業務層、持久層、AOP、事務管理等企業級開發全方位需求。其分層架構讓您可按需採用單一模組或完整堆疊。

Spring 框架架構圖
圖 1:Spring 框架七大模組架構

七大核心模組詳解

模組核心功能關鍵類/介面
Core 核心容器 IoC 容器,管理 Bean 生命週期與依賴關係 BeanFactory, ApplicationContext, XmlBeanFactory
Context 應用上下文 擴展 BeanFactory,提供企業級服務(JNDI、EJB、國際化、事件傳播、資源載入) ApplicationContext, WebApplicationContext
AOP 面向切面 將橫切關注點(事務、日誌、安全)模組化,支援聲明式事務 MethodInterceptor, ProxyFactoryBean, TransactionProxyFactoryBean
DAO 資料存取 JDBC 抽象層,統一例外階層,支援程式化/聲明式事務 JdbcTemplate, JdbcDaoSupport, DataAccessException
ORM 物件關係映射 整合 Hibernate、JDO、iBATIS、TopLink、OJB,提供模板類與資源管理 HibernateTemplate, SqlMapClientDaoSupport, LocalSessionFactoryBean
Web Flow 宣告式定義 Web 應用流程(有限狀態機),支援重用與多框架整合 FlowController, XmlFlowRegistryFactoryBean, FlowExecutorImpl
Web MVC 請求導向 MVC 實作,策略介面豐富(HandlerMapping、Controller、ViewResolver 等) DispatcherServlet, SimpleUrlHandlerMapping, Controller, InternalResourceViewResolver

為何 Spring + Geronimo 是黃金搭檔?

  • 雙方都採用 IoC/依賴注入 實現鬆耦合
  • 都不重造輪子,善用現有開源 API
  • Geronimo 內建 Tomcat、Derby、ActiveMQ,Spring 直接整合
  • Spring 組件在 Geronimo 上易於獨立測試與部署

核心容器深度解析

BeanFactory:IoC 基石

// 從檔案系統載入組態
Resource resource = new FileSystemResource("beans.xml");
XMLBeanFactory beanFactory = new XMLBeanFactory(resource);

// 從 Classpath 載入
Resource cpResource = new ClassPathResource("beans.xml");
XMLBeanFactory beanFactory = new XMLBeanFactory(cpResource);

XML 組態範例

<beans>
    <bean id="myBean" class="com.example.MyClass">
        <property name="dependency" ref="anotherBean"/>
    </bean>
    <bean id="anotherBean" class="com.example.AnotherClass"/>
</beans>

ApplicationContext:企業級增強

繼承 BeanFactory,新增:AOP 整合、訊息資源(i18n)、資源訪問、事件傳播、WebApplicationContext 等。除非記憶體極度受限,建議優先使用 ApplicationContext。

Spring AOP 與聲明式事務

Spring 內建隔離的 AOP 框架,不強制使用。核心概念:切面、連接點(方法呼叫)、通知(Before/After/Around)、切入點(正則)、織入(執行期)。預打包 聲明式事務管理 切面,提供類 EJB CMT 功能但適用於 POJO。

Spring DAO 與 JDBC 抽象

傳統 JDBC 痛點

  • 冗長 try-catch-finally 區塊
  • 連線關閉易疏漏導致資源洩漏
  • SQLException 過於泛化,缺乏資訊

Spring 解決方案

  • JdbcTemplate:模板模式封裝資源管理與例外轉換
  • 統一 DataAccessException 階層
  • JdbcDaoSupport 基類簡化 DAO 實作
  • DataSource 抽象與多種實現(驅動管理、連線池、JNDI)

Spring ORM 整合優勢

  • 資源管理透明化:SessionFactory/DataSource 定義為 Bean,DAO 透過引用取得
  • DAO 支援基類:HibernateDaoSupport、JdoDaoSupport、SqlMapClientDaoSupport
  • 事務策略抽象:PlatformTransactionManager 介面統一 JDBC/Hibernate/JTA 事務
  • 易測試:IoC 讓持久層實作可輕鬆替換

Hibernate 整合範例

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
    <property name="url" value="jdbc:hsqldb:hsql://localhost:9001"/>
    <property name="username" value="XXXX"/>
    <property name="password" value="YYYY"/>
</bean>

<bean id="mySessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
    <property name="dataSource" ref="myDataSource"/>
    <property name="mappingResources"><list><value>product.hbm.xml</value></list></property>
    <property name="hibernateProperties">...</property>
</bean>

<bean id="employeeDao" class="emp.EmployeeDaoImpl">
    <property name="sessionFactory" ref="mySessionFactory"/>
</bean>

Spring Web Flow:解決複雜導航

傳統自由導航與受控流程混雜難以建模。SWF 以有限狀態機定義流程,XML 外部化,支援重用於 Struts、JSF、Spring MVC、Portlet 等環境。優點:構造清晰、生命週期受管、流程可視化、易於整合。

Spring Web MVC 架構

圍繞 DispatcherServlet(前端控制器)設計,關鍵策略介面:

  • HandlerMapping:URL 映射至 Handler
  • HandlerAdapter:執行 Handler
  • Controller:處理請求核心邏輯
  • ViewResolver:邏輯視圖名解析為實際 View
  • Locale/Theme/Multipart Resolver:國際化、主題、檔案上傳

高度抽象使測試極易,IoC 組態統一管理 Web 層依賴。

系列教程規劃回顧

  1. 本篇:架構與方法論
  2. 第二部分:建置首個 Spring 應用於 Geronimo
  3. 第三部分:整合 JDBC、DAO、iBATIS ORM 動態存取 Derby
  4. 第四部分:Spring AOP、聲明式事務、Spring Web Flow
  5. 第五部分:Spring MVC 深度與 Controller/Handler 實戰
  6. 第六部分:Spring MVC 視圖技術

結語

Spring 以 IoC 為核心,解決 J2EE/Java EE 開發通用難題,靈活適用於標準環境之外。掌握七大模組與依賴注入思想,即可在 Geronimo 上構建清晰、可測試、可維護的企業級應用。準備好迎接第二部分的實戰之旅了嗎?

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