精通Spring

精通Spring

精通Spring是一本書,是關於Spring 2.5的權威教程,是Java/Java EE開發者必備的參考書。全書共分為5篇:第1篇為綜述,主要圍繞Java EE 5、Spring展開;第2篇介紹Spring 2.5核心技術,主要圍繞Spring元框架進行闡述;第3篇介紹DAO層集成技術,主要圍繞JDBC、Hibernate和JPA等持久化技術展開論述,針對Spring使能套用的事務管理和集成測試,也進行了相關介紹。

基本信息

內容簡介

本書是關於Spring 2.5的權威教程,是Java/Java EE開發者必備的參考書。全書共分為5篇:第1篇為綜述,主要圍繞Java EE 5、Spring展開;第2篇介紹Spring 2.5核心技術,主要圍繞Spring元框架進行闡述;第3篇介紹DAO層集成技術,主要圍繞JDBC、Hibernate和JPA等持久化技術展開論述,針對Spring使能套用的事務管理和集成測試,也進行了相關介紹;第4篇介紹Java EE服務及技術的集成,主要圍繞企業套用中使用的各種Java EE服務及技術展開論述;第5篇介紹Spring 2.5高級特性,主要從忘卻的Spring高級話題和Spring最佳實踐角度給出論述;附錄A完整地介紹了Spring 2.5支持的各種命名空間及其中的所有元素。全書理論與實踐並重,通過大量的實例幫助讀者儘快掌握Spring 2.5的使用技巧,從而提高本書的參考、閱讀價值。
本書適合作為Java/Java EE開發者、系統分析師和架構師的參考書,同時,本書非常適合於高校相關專業的學生,以及對Java/Java EE開發有興趣的各類開發者。

作者簡介

羅時飛,獨立Java EE顧問。西安交通大學碩士。將近10年的Java EE開發、架構經驗,理論與實踐並重。對Java EE平台、敏捷方法及開源技術有深入研究。出版圖書多本,曾被評為電子工業出版社的“優秀作譯者”。他一直在依託網站專職從事企業級Java的推廣工作。
其近期代表作品有:
《敏捷持續集成(Cruise Control版)——高效研發之道》、《敏捷acegi、CAS——構建安全的Java系統》、《精通EJB3.O》(譯)、《精通Spring 2.0》。

編輯推薦

專業人士,權威經典。
Spring 2.5是迄今為止完美的Java EE架構級框架,全面深入、多維度演繹Spring 2.5的各個方面,本書蘊含作者多年Java EE研發實踐及經驗。
凝聚Java魅力,成就開發專家
看清Java萬花的本質,從複雜的表象中尋找普遍的規律,深刻理解Java的核心思想。
關於Spring2.5的權威教程,是Java/Java EE開發者、架構師必備的參考書
對JavaEE5及Spring2.5進行了綜述。包括Java EE5,步入Spring2.5,獲得Spring2.5發布版和源碼。啟動Spring2.5使能項目
詳細介紹Spring2.5核心技術。包括控制反轉容器,面向切面編程
對DA0層集成技術進行了詳細闡述。包括DA0抽象支持。JDBC集成,事務集成,單元和集成測試。Hibernate集成,Java持久化API集成
深入講解Java EE服務及技術集成。包括JNDI集成,EJB3.0集成.執行緒池和任務調度集成。Java訊息服務集成,Java Mail集成,遠程服務集成。Java管理擴展集成,Java EE連線器架構集成
專注於Spring2.5高級特性的研究。包括忘卻的Spring高級話題,Spring最佳實踐
對Spring2.5內置的各種XML Schema支持進行了全方位闡述。包括基於XML Schema的權威配置指南
全書理論與實踐並重,通過大量的實例幫助讀者儘快掌握Spring2,5的各種基本和高級使用技巧,從而提高本書的參考和閱讀價值

目錄

第1篇 綜述

第1章 Java EE 5
1.1 Java EE 5引入的新特性
1.2 進入EJB 3.0時代
1.3 Java EE開發模型的局限性
1.4 小結
第2章 步入Spring 2.5
2.1 挑戰Java EE 5開發模型
2.1.1 輕量級開發模型
2.1.2 倡導敏捷開發
2.1.3 Spring 2.5的架構價值
2.2 有所為和有所不為
2.2.1 Spring 2.5提供的功能
2.2.2 排除在外
2.3 Spring 2.5時代的到來
2.4 小結
第3章 獲得Spring 2.5發布版和源碼
3.1 獲得Spring 2.5持續發布版
3.2 獲得持續更新的Spring 2.5項目源碼
3.3 小結
第4章 啟動Spring 2.5使能項目
4.1 開發平台的搭建
4.1.1 JDK的安裝及設定
4.1.2 選用Eclipse IDE和WTP
4.1.3 藉助外掛程式調試Web套用
4.1.4 獲取及安裝Spring IDE
4.2 Spring IDE的使用
4.3 小結

第2篇 Spring 2.5核心技術

第5章 控制反轉容器
5.1 有關DI容器的背景知識
5.2 BeanFactory和ApplicationContext
5.3 宿主DI容器配置元數據的不同方式
5.3.1 基於XML的DI容器配置元數據
5.3.2 基於註解的DI容器配置元數據
5.4 基於泛型訪問DI容器
5.5 支持的不同依賴注入類型
5.5.1 設值注入
5.5.2 構建器注入
5.5.3 屬性注入
5.5.4 方法注入
5.6 Autowiring策略
5.6.1 autowire屬性
5.6.2 元素的dependency-check屬性
5.6.3 @Required註解
5.6.4 @Autowired註解
5.6.5 細粒度控制Autowiring策略
5.6.6 借用元素
5.7 善待depends-on屬性
5.8 抽象和子Bean定義
5.9 別名(Alias)
5.10 外在化套用參數的配置
5.10.1 元素
5.10.2 元素
5.11 受管Bean的作用範圍
5.11.1 單例和原型
5.11.2 僅僅適合於Web環境的三種作用範圍
5.12 在Web套用中使用DI容器
5.12.1 往Web套用中載入DI容器
5.12.2 複合多個配置檔案
5.12.3 於Web套用中操控DI容器
5.12.4 國際化和本地化訊息資源
5.13 探索命名空間
5.13.1 元素
5.13.2 元素
5.13.3 元素
5.13.4 元素
5.13.5 元素
5.13.6 元素
5.14 使用
命名空間
5.15 操控資源
5.15.1 內置的Resource繼承鏈
5.15.2 藉助DI容器訪問各種資源
5.15.3 妙用classpath*前綴
5.16 回調接口集合及其觸發順序
5.16.1 BeanNameAware回調接口
5.16.2 BeanClassLoaderAware回調接口
5.16.3 BeanFactoryAware回調接口
5.16.4 ResourceLoaderAware回調接口
5.16.5 ApplicationEventPublisherAware回調接口
5.16.6 MessageSourceAware回調接口
5.16.7 ApplicationContextAware回調接口
5.16.8 @PostConstruct註解
5.16.9 InitializingBean回調接口
5.16.10 元素的init-method屬性
5.16.11 @PreDestroy註解
5.16.12 DisposableBean回調接口
5.16.13 元素的destroy-method屬性
5.17 小結
第6章 面向切面編程
6.1 AOP背景知識
6.2 Aspectj 6介紹
6.2.1 AspectJ的安裝及使用
6.2.2 Before裝備
6.2.3 AfterReturning裝備
6.2.4 AfterThrowing裝備
6.2.5 After裝備
6.2.6 Around裝備
6.2.7 引入(Introduction)
6.3 Spring AOP的基本概念
6.4 Spring AOP的老式用法
6.4.1 Before裝備
6.4.2 基於ProxyFactoryBean的手工代理
6.4.3 AfterReturning裝備
6.4.4 AfterThrowing裝備
6.4.5 Around裝備
6.4.6 Introduction引入
6.4.7 使用自動代理特性
6.4.8 切換代理機制
6.4.9 基於ProxyFactory的編程代理
6.5 基於@AspectJ的Spring AOP
6.5.1 聲明切面、pointcut和裝備
6.5.2 各種裝備的使用
6.5.3 切換代理機制
6.5.4 控制各裝備的觸發順序
6.5.5 pointcut表達語言
6.6 基於元素的AOP
6.6.1 聲明切面、pointcut和裝備
6.6.2 各種裝備的使用
6.6.3 元素
6.6.4 切換代理機制
6.7 借用AspectJ 6進行領域對象的DI操作
6.7.1 直接使用AnnotationBean-ConfigurerAspect切面
6.7.2 @Configurable註解
6.7.3 藉助aop.xml控制啟用的特定切面
6.7.4 元素
6.7.5 元素
6.7.6 借用元素
6.8 小結

第3篇 DAO層集成技術

第7章 DAO抽象支持
7.1 背景
7.2 DAO集成支持
7.2.1 DataAccessException異常體系
7.2.2 DaoSupport繼承鏈
7.2.3 DataAccessUtils實用類
7.3 小結
第8章 JDBC集成
8.1 背景知識及示例
8.2 Spring對JDBC提供的支持
8.3 運行JDBC版PetClinic實例
8.4 JdbcTemplate及相應的支持類
8.4.1 JdbcTemplate核心類
8.4.2 JdbcDaoSupport支持類
8.5 NamedParameterJdbcTemplate及相應的支持類
8.5.1 NamedParameterJdbcTemplate模板類
8.5.2 NamedParameterJdbcDao-Support支持類
8.6 SimpleJdbcTemplate及相應的支持類
8.6.1 SimpleJdbcTemplate模板類
8.6.2 SimpleJdbcDaoSupport支持類
8.6.3 SimpleJdbcInsert輔助類
8.6.4 基於JDBC的PetClinic綜合示例分析
8.7 內置的DataSource繼承鏈
8.7.1 用於測試目的的DriverManagerDataSource
8.7.2 用於測試目的的SimpleDriverDataSource
8.7.3 用於測試目的的Single-ConnectionDataSource
8.7.4 Apache DBCP數據源
8.7.5 Java EE容器內置的數據源
8.7.6 LazyConnectionDataSource-Proxy數據源
8.7.7 TransactionAwareDataSource-Proxy數據源
8.7.8 UserCredentialsDataSource-Adapter數據源
8.7.9 IsolationLevelDataSource-Adapter數據源
8.7.10 WebSphereDataSource-Adapter數據源
8.7.11 IsolationLevelDataSource-Router數據源
8.8 將JDBC操作建模成Java對象
8.8.1 SqlUpdate輔助類
8.8.2 UpdatableSqlQuery輔助類
8.8.3 MappingSqlQuery輔助類
8.8.4 SqlFunction輔助類
8.9 與存儲過程互動
8.9.1 JdbcTemplate針對存儲過程提供的支持
8.9.2 StoredProcedure輔助類
8.9.3 SimpleJdbcCall輔助類
8.10 處理大批量數據
8.10.1 JdbcTemplate內置的batchUpdate()方法
8.10.2 SimpleJdbcTemplate內置的batchUpdate()方法
8.10.3 BatchSqlUpdate輔助類
8.11 基於JDBC的lob集成支持
8.11.1 運行及分析imagedb示例套用
8.11.2 NativeJdbcExtractor繼承鏈
8.11.3 操作LOB欄位
8.12 如何獲得和生成主鍵
8.12.1 KeyHolder及GeneratedKey-Holder實現者
8.12.2 DataFieldMaxValue-Incrementer繼承鏈
8.13 對行集的支持
8.13.1 JdbcTemplate內置的queryForRowSet()方法集合
8.13.2 NamedParameterJdbcTemplate內置的queryForRowSet()方法集合
8.14 JDBC最佳實踐
8.15 小結
第9章 事務集成
9.1 背景知識及示例
9.2 Spring對事務提供的支持
9.3 Spring眼中的事務管理策略
9.3.1 事務定義
9.3.2 各種PlatformTransaction-Manager實現
9.4 編程式事務
9.4.1 TransactionTemplate及相關回調接口
9.4.2 使用@Transactional註解和元素
9.4.3 擁抱EJB 3.0引入的@TransactionAttribute註解
9.5 聲明式事務
9.5.1 TransactionProxyFactoryBean輔助類
9.5.2 元素
9.6 在AspectJ 6套用中使用@Transactional
9.6.1 直接使用Annotation-TransactionAspect切面
9.6.2 借用元素
9.6.3 借用元素
9.7 事務集成高級特性
9.7.1 Java EE套用伺服器的事務集成
9.7.2 元素
9.7.3 選擇合適的事務策略
9.8 小結
第10章 單元和集成測試
10.1 背景知識及示例
10.2 Spring對集成測試的支持
10.2.1 ReflectionTestUtils實用類
10.2.2 運行PetClinic中的集成測試類
10.3 遺留JUnit 3.8集成測試支持
10.3.1 AbstractSingleSpringContext-Tests支持類
10.3.2 AbstractDependencyInjection-SpringContextTests支持類
10.3.3 AbstractTransactionalSpring-ContextTests支持類
10.3.4 AbstractTransactionalData-SourceSpringContextTests支持類
10.3.5 AbstractAnnotationAware-TransactionalTests支持類
10.4 新引入的TestContext集成測試框架
10.4.1 面向開發者的支持類
10.4.2 AbstractJUnit38Spring-ContextTests支持類
10.4.3 AbstractTransactionalJUnit38-SpringContextTests支持類
10.4.4 AbstractJUnit4Spring-ContextTests支持類
10.4.5 AbstractTransactionalJUnit4-SpringContextTests支持類
10.5 集成測試最佳實踐
10.6 小結
第11章 Hibernate集成
11.1 背景知識及示例
11.2 Hibernate Tools介紹
11.2.1 Ant支持
11.2.2 Eclipse支持
11.3 Spring對Hibernate提供的支持
11.4 運行Hibernate版PetClinic實例
11.5 基於Hibernate集成的crud操作
11.5.1 HibernateTemplate模板類
11.5.2 HibernateCallback回調接口
11.5.3 關於SessionFactory.getCurrentSession()方法的使用
11.6 LocalSessionFactoryBean
11.7 AnnotationSession-FactoryBean
11.8 事務管理支持
11.9 基於Hibernate的LOB處理
11.10 為imagedb示例啟用JTA事務
11.11 集成測試支持
11.11.1 分析Hibernate版PetClinic實例的集成測試工作
11.11.2 混合使用JDBC和Hibernate
11.12 小結
第12章 Java持久化API集成
12.1 背景知識及示例
12.2 Spring對JPA提供的支持
12.3 基於JPA集成的CRUD操作
12.3.1 JpaTemplate模板類
12.3.2 JpaCallbck回調接口
12.3.3 @PersistenceContext註解
12.4 AbstractEntityManager-FactoryBean繼承鏈
12.4.1 LocalEntityManager-FactoryBean輔助類
12.4.2 LocalContainerEntity-ManagerFactoryBean輔助類
12.4.3 DataSourceLookup繼承鏈
12.5 事務管理支持
12.6 裝載期織入(LTW)
12.6.1 ReflectiveLoadTimeWeaver實現類
12.6.2 InstrumentationLoad-TimeWeaver實現類
12.6.3 LoadTimeWeaver繼承鏈在JPA集成中的套用
12.7 SharedEntityManagerBean
12.8 集成測試支持
12.8.1 AbstractJpaTests支持類
12.8.2 AbstractAspectjJpaTests支持類
12.8.3 混合使用JDBC和JPA
12.9 小結

第4篇 集成Java EE服務及技術

第13章 JNDI集成
13.1 背景知識及示例
13.2 Spring對JNDI提供的支持
13.3 JndiObjectFactoryBean
13.4 元素
13.5 JndiTemplate和JndiCallback的使用
13.6 小結
第14章 EJB 3.0集成
14.1 背景知識及示例
14.2 Spring對開發EJB 3.0組件提供的支持
14.3 Spring對訪問EJB 3.0組件提供的支持
14.3.1 藉助JndiObjectFactory-Bean輔助類
14.3.2 org.springframework.ejb.access包
14.3.3 元素和元素
14.4 關於遺留EJB 2.x支持
14.5 小結
第15章 執行緒池和任務調度集成
15.1 Spring提供的執行緒池支持
15.1.1 SyncTaskExecutor執行器
15.1.2 SimpleAsyncTaskExecutor執行器
15.1.3 ThreadPoolTaskExecutor和ConcurrentTaskExecutor執行器
15.1.4 TimerTaskExecutor執行器
15.1.5 SimpleThreadPool-TaskExecutor執行器
15.1.6 commonj.WorkManager-TaskExecutor執行器
15.1.7 jca.work.WorkManager-TaskExecutor繼承鏈
15.2 Spring提供的任務調度支持
15.2.1 針對java.util.Timer的任務調度支持
15.2.2 針對Quartz的任務調度支持
15.2.3 針對java.util.concurrent的任務調度支持
15.2.4 針對CommonJ的任務調度支持
15.3 小結
第16章 Java訊息服務集成
16.1 背景知識及示例
16.2 Spring對JMS訊息提供的支持
16.3 藉助JmsTemplate傳送JMS訊息
16.4 同步和異步消費JMS訊息
16.4.1 藉助JmsTemplate同步接收JMS訊息
16.4.2 AbstractMessageListener-Container容器
16.4.3 元素
16.5 JMS事務管理
16.6 小結
第17章 JavaMail集成
17.1 背景知識及示例
17.2 Spring對JavaMail提供的支持
17.3 傳送簡單郵件
17.4 傳送含有附屬檔案的郵件
17.5 傳送含有HTML和內嵌資源的郵件
17.6 小結
第18章 遠程服務集成
18.1 遠程服務背景知識及示例
18.2 Spring對遠程服務提供的支持
18.3 RMI/RMI-IIOP集成
18.4 hessian和Burlap集成
18.4.1 DispatcherServlet和HttpRequestHandlerServlet輔助類
18.4.2 宿主在Sun JDK 6.0內置的HTTP伺服器中
18.5 HTTP Invoker支持
18.6 Web服務集成
18.6.1 JAX-RPC集成
18.6.2 JAX-WS集成
18.7 基於JMS的遠程服務
18.8 小結
第19章 Java管理擴展集成
19.1 背景知識及示例
19.2 Spring對JMX提供的支持
19.3 自動註冊MBean組件
19.3.1 關於MBeanExporter的autodetectMode和registrationBehavior屬性
19.3.2 Hibernate暴露的StatisticsService MBean
19.4 將POJO導出成MBean組件
19.5 控制MBean組件的管理接口
19.5.1 AbstractConfigurable-MBeanInfoAssembler繼承鏈
19.5.2 基於註解的Metadata-MBeanInfoAssembler
19.5.3 和元素
19.5.4 面向異步處理的Lifecycle接口
19.6 控制MBean組件的ObjectName
19.6.1 KeyNamingStrategy實現類
19.6.2 IdentityNamingStrategy實現類
19.6.3 MetadataNamingStrategy實現類
19.7 傳送與接收JMX通知
19.8 通過套用訪問MBean組件
19.9 小結
第20章 Java EE連線器架構集成
20.1 背景知識及示例
20.2 Spring對JCA提供的支持
20.3 CciTemplate及相關回調接口
20.4 將JCA操作建模成Java對象
20.5 事務管理
20.6 宿主在JCA適配器中的DI容器
20.6.1 將SpringContextResource-Adapter部署到RAR中
20.6.2 ResourceAdapterFactory-Bean輔助類
20.7 小結

第5篇 Spring 2.5高級特性

第21章 忘卻的Spring高級話題
21.1 分發和監聽事件
21.2 AOP攔截器鏈
21.3 DataSourceUtils、Session-FactoryUtils、EntityManager-FactoryUtils
21.4 Web層集成支持
21.5 元素
21.6 如何優雅地銷毀DI容器
21.6.1 Web套用類型
21.6.2 EJB套用類型
21.6.3 JAVA SE套用、集成測試類型
21.7 DI容器的分層管理
21.8 腳本集成
21.9 小結
第22章 Spring最佳實踐
22.1 注重分層架構設計
22.2 合理採納註解技術
22.3 日誌管理策略
22.4 善待Java EE容器內置的類裝載器
22.5 逐步採納Spring 2.5
22.6 小結
附錄A 基於XML Schema的權威配置指南
A.1 XML配置檔案
A.2 命名空間
A.2.1 元素
A.2.2 元素
A.2.3 元素
A.2.4 元素
A.3 命名空間
A.3.1 元素
A.3.2 元素
A.3.3 元素
A.3.4 元素
A.3.5 元素
A.3.6 元素
A.4 命名空間
A.4.1 元素
A.4.2 元素
A.4.3 元素
A.4.4 元素
A.4.5 元素
A.4.6 元素
A.4.7 元素
A.4.8 元素
A.5 命名空間
A.5.1 元素
A.5.2 元素
A.5.3 元素
A.6 命名空間
A.6.1 元素
A.6.2 元素
A.6.3 元素
A.7 命名空間
A.7.1 元素
A.7.2 元素
A.7.3 元素
A.8 命名空間
A.8.1 元素
A.8.2 元素
A.9 命名空間
A.9.1 元素
A.9.2 元素
A.9.3 元素
A.9.4 元素
A.10
命名空間
A.11 小結

書摘插圖

第1篇 綜述
隨著Java EE 5平台標準的發布,新一輪的技術革新繼而上演。在POJO開發模型領域,Spring一直以領先者的姿態呈現。Spring 1.x獲得了巨大成功,它倡導的POJO開發模型加速了TDD的實施,並最終保證了複雜軟體的如期高質量交付。Spring 2.x在Spring 1.x基礎上,大大簡化了套用配置,同時又保證了Spring 1.X兼容性。它引入了新的命名空間、與Aspect J 6進行無縫集成、提供一流的JPA集成支持、內置MDP開發模型、全面擁抱註解技術。最令人振奮的是,Spring 2.x完整而深入地支持Java EE 5、JDK 6.0,包括對OSGI的全面支持。
“分久必合,合久必分”。Java EE平台技術出現前,各個伺服器廠商以專有行為開發自身的伺服器產品。Java EE平台技術出現後,各個伺服器產品遵循了Java EE相關技術規範。它們在遵循規範的同時,又引入了自身的專有行為,有些是由Java EE規範未定義清晰導致的,有些是由廠商的理解不到位造成的。Spring社區出現後,這些專有行為又被一到一起,藉助Dl容器能夠合理禁止各廠商的專有行為。Dl容器的使用使得套用代碼不再同具體Java EE容器耦合在一起,而且AOP技術的引入使得Dl容器中受管Bean的威力更大。
Spring 2.x在Java EE 5時代已經成為主角、顛覆者,因為它提供的DI、DOP技術已經遠遠超越了Java EE容器提供的依賴性管理支持和@Interceptors攔截器支持。
本部分包括如下內容。
……

相關詞條

相關搜尋

熱門詞條

聯絡我們