這個(gè)開發(fā)手冊(cè)的第一部分描述了Spring Framework所有使用到的技術(shù)領(lǐng)域。
首先是Spring Framework中的控制翻轉(zhuǎn)(IoC)容器。在完整的闡述了Spring Framework的IoC容器后緊跟的是對(duì)Spring的面向方面編程(AOP)技術(shù)的全面說明。
Spring Framework擁有自己的AOP框架,這個(gè)框架在概念上是十分容易理解的,而且它成功地實(shí)現(xiàn)了在Java企業(yè)級(jí)開發(fā)中對(duì)AOP需求的80%左右。
開發(fā)手冊(cè)中還描述了Spring與AspectJ的集成方法。
(當(dāng)前來說,AspectJ是Java企業(yè)級(jí)開發(fā)領(lǐng)域中特性最多、最成熟的AOP實(shí)現(xiàn)。)
最后,Spring小組提倡在軟件開發(fā)中運(yùn)用測(cè)試驅(qū)動(dòng)開發(fā)(TDD)方法,所以在最后涵蓋了Spring對(duì)集成測(cè)試的支持(包括單元測(cè)試的最佳實(shí)踐)。
Spring小組發(fā)現(xiàn)正確使用IoC可以讓單元測(cè)試和集成測(cè)試更容易進(jìn)行(在類中定義setter方法和適當(dāng)?shù)臉?gòu)造方法讓java類更容易地與測(cè)試聯(lián)系起來,
而不用設(shè)置服務(wù)定位注冊(cè)或類似的東西)……希望僅專注于測(cè)試的"同學(xué)"們,這一章一定會(huì)讓你有所收獲。
目錄
- 3. IoC(控制反轉(zhuǎn))容器
- 3.1. 簡(jiǎn)介
- 3.2. 基本原理 - 容器和bean
- 3.2.1. 容器
- 3.2.2. 實(shí)例化容器
- 3.2.3. 多種bean
- 3.2.4. 使用容器
- 3.3. 依賴
- 3.3.1. 注入依賴
- 3.3.2. 依賴配置詳解
- 3.3.3. 使用
depends-on
- 3.3.4. 延遲初始化bean
- 3.3.5. 自動(dòng)裝配(autowire)協(xié)作者
- 3.3.6. 依賴檢查
- 3.3.7. 方法注入
- 3.4. Bean的作用域
- 3.4.1. Singleton作用域
- 3.4.2. Prototype作用域
- 3.4.3. Singleton beans和prototype-bean的依賴
- 3.4.4. 其他作用域
- 3.4.5. 自定義作用域
- 3.5. 定制bean特性
- 3.5.1. 生命周期回調(diào)
- 3.5.2. 了解自己
- 3.6. bean定義的繼承
- 3.7. 容器擴(kuò)展點(diǎn)
- 3.7.1. 用
BeanPostProcessor
定制bean
- 3.7.2. 用
BeanFactoryPostProcessor
定制配置元數(shù)據(jù)
- 3.7.3. 使用
FactoryBean
定制實(shí)例化邏輯
- 3.8. The
ApplicationContext
- 3.8.1.
BeanFactory
還是
ApplicationContext
?
- 3.8.2. 利用
MessageSource
實(shí)現(xiàn)國(guó)際化
- 3.8.3. 事件
- 3.8.4. 底層資源的訪問
- 3.8.5.
ApplicationContext
在WEB應(yīng)用中的實(shí)例化
- 3.9. 粘合代碼和可怕的singleton
- 3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext
- 3.11. 基于注解(Annotation-based)的配置
- 3.11.1.
@Autowired
- 3.11.2. 基于注解的自動(dòng)連接微調(diào)
- 3.11.3.
CustomAutowireConfigurer
- 3.11.4.
@Resource
- 3.11.5.
@PostConstruct
與 @PreDestroy
- 3.12. 對(duì)受管組件的Classpath掃描
- 3.12.1.
@Component
和更多典型化注解
- 3.12.2. 自動(dòng)檢測(cè)組件
- 3.12.3. 使用過濾器自定義掃描
- 3.12.4. 自動(dòng)檢測(cè)組件的命名
- 3.12.5. 為自動(dòng)檢測(cè)的組件提供一個(gè)作用域
- 3.12.6. 用注解提供限定符元數(shù)據(jù)
- 3.13. 注冊(cè)一個(gè)
LoadTimeWeaver
- 4. 資源
- 4.1. 簡(jiǎn)介
- 4.2.
Resource
接口
- 4.3. 內(nèi)置
Resource
實(shí)現(xiàn)
- 4.3.1.
UrlResource
- 4.3.2.
ClassPathResource
- 4.3.3.
FileSystemResource
- 4.3.4.
ServletContextResource
- 4.3.5.
InputStreamResource
- 4.3.6.
ByteArrayResource
- 4.4.
ResourceLoader
接口
- 4.5.
ResourceLoaderAware
接口
- 4.6. 把
Resource
作為屬性來配置
- 4.7. Application context 和
Resource
路徑
- 4.7.1. 構(gòu)造application context
- 4.7.2. Application context構(gòu)造器中資源路徑的通配符
- 4.7.3.
FileSystemResource
說明
- 5. 校驗(yàn),數(shù)據(jù)綁定,
BeanWrapper
,與屬性編輯器
- 5.1. 簡(jiǎn)介
- 5.2. 使用Spring的
Validator
接口進(jìn)行校驗(yàn)
- 5.3. 從錯(cuò)誤代碼到錯(cuò)誤信息
- 5.4. Bean處理和
BeanWrapper
- 5.4.1. 設(shè)置和獲取屬性值以及嵌套屬性
- 5.4.2. 內(nèi)建的PropertyEditor實(shí)現(xiàn)
- 6. 使用Spring進(jìn)行面向切面編程(AOP)
- 6.1. 簡(jiǎn)介
- 6.1.1. AOP概念
- 6.1.2. Spring AOP的功能和目標(biāo)
- 6.1.3. AOP代理
- 6.2. @AspectJ支持
- 6.2.1. 啟用@AspectJ支持
- 6.2.2. 聲明一個(gè)切面
- 6.2.3. 聲明一個(gè)切入點(diǎn)(pointcut)
- 6.2.4. 聲明通知
- 6.2.5. 引入(Introduction)
- 6.2.6. 切面實(shí)例化模型
- 6.2.7. 例子
- 6.3. 基于Schema的AOP支持
- 6.3.1. 聲明一個(gè)切面
- 6.3.2. 聲明一個(gè)切入點(diǎn)
- 6.3.3. 聲明通知
- 6.3.4. 引入
- 6.3.5. 切面實(shí)例化模型
- 6.3.6. Advisor
- 6.3.7. 例子
- 6.4. AOP聲明風(fēng)格的選擇
- 6.4.1. Spring AOP還是完全用AspectJ?
- 6.4.2. Spring AOP中使用@AspectJ還是XML?
- 6.5. 混合切面類型
- 6.6. 代理機(jī)制
- 6.6.1. 理解AOP代理
- 6.7. 以編程方式創(chuàng)建@AspectJ代理
- 6.8. 在Spring應(yīng)用中使用AspectJ
- 6.8.1. 在Spring中使用AspectJ進(jìn)行domain object的依賴注入
- 6.8.2. Spring中其他的AspectJ切面
- 6.8.3. 使用Spring IoC來配置AspectJ的切面
- 6.8.4. 在Spring應(yīng)用中使用AspectJ加載時(shí)織入(LTW)
- 6.9. 更多資源
- 7. Spring AOP APIs
- 7.1. 簡(jiǎn)介
- 7.2. Spring中的切入點(diǎn)API
- 7.2.1. 概念
- 7.2.2. 切入點(diǎn)運(yùn)算
- 7.2.3. AspectJ切入點(diǎn)表達(dá)式
- 7.2.4. 便利的切入點(diǎn)實(shí)現(xiàn)
- 7.2.5. 切入點(diǎn)的超類
- 7.2.6. 自定義切入點(diǎn)
- 7.3. Spring的通知API
- 7.3.1. 通知的生命周期
- 7.3.2. Spring里的通知類型
- 7.4. Spring里的Advisor API
- 7.5. 使用ProxyFactoryBean創(chuàng)建AOP代理
- 7.5.1. 基礎(chǔ)
- 7.5.2. JavaBean屬性
- 7.5.3. 基于JDK和CGLIB的代理
- 7.5.4. 對(duì)接口進(jìn)行代理
- 7.5.5. 對(duì)類進(jìn)行代理
- 7.5.6. 使用“全局”通知器
- 7.6. 簡(jiǎn)化代理定義
- 7.7. 使用ProxyFactory通過編程創(chuàng)建AOP代理
- 7.8. 操作被通知對(duì)象
- 7.9. 使用“自動(dòng)代理(autoproxy)”功能
- 7.9.1. 自動(dòng)代理bean定義
- 7.9.2. 使用元數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)代理
- 7.10. 使用TargetSource
- 7.10.1. 熱交換目標(biāo)源
- 7.10.2. 池化目標(biāo)源
- 7.10.3. 原型目標(biāo)源
- 7.10.4.
ThreadLocal
目標(biāo)源
- 7.11. 定義新的
Advice
類型
- 7.12. 更多資源
- 8. 測(cè)試
- 8.1. 簡(jiǎn)介
- 8.2. 單元測(cè)試
- 8.2.1. Mock對(duì)象
- 8.2.2. 單元測(cè)試支持類
- 8.3. 集成測(cè)試
- 8.3.1. 概覽
- 8.3.2. 使用哪個(gè)支持框架
- 8.3.3. 通用目標(biāo)
- 8.3.4. JDBC測(cè)試支持
- 8.3.5. 常用注解
- 8.3.6. JUnit 3.8遺留支持
- 8.3.7. Spring TestContext Framework
- 8.3.8. PetClinic示例
- 8.4. 更多資源