部分 I. 核心技术

这个开发手册的第一部分描述了Spring Framework所有使用到的技术领域。

首先是Spring Framework中的控制翻转(IoC)容器。在完整的阐述了Spring Framework的IoC容器后紧跟的是对Spring的面向方面编程(AOP)技术的全面说明。 Spring Framework拥有自己的AOP框架,这个框架在概念上是十分容易理解的,而且它成功地实现了在Java企业级开发中对AOP需求的80%左右。

开发手册中还描述了Spring与AspectJ的集成方法。 (当前来说,AspectJ是Java企业级开发领域中特性最多、最成熟的AOP实现。)

最后,Spring小组提倡在软件开发中运用测试驱动开发(TDD)方法,所以在最后涵盖了Spring对集成测试的支持(包括单元测试的最佳实践)。 Spring小组发现正确使用IoC可以让单元测试和集成测试更容易进行(在类中定义setter方法和适当的构造方法让java类更容易地与测试联系起来, 而不用设置服务定位注册或类似的东西)……希望仅专注于测试的"同学"们,这一章一定会让你有所收获。

目录

3. IoC(控制反转)容器
3.1. 简介
3.2. 基本原理 - 容器和bean
3.2.1. 容器
3.2.2. 实例化容器
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. 自动装配(autowire)协作者
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. 生命周期回调
3.5.2. 了解自己
3.6. bean定义的继承
3.7. 容器扩展点
3.7.1. 用BeanPostProcessor定制bean
3.7.2. 用BeanFactoryPostProcessor定制配置元数据
3.7.3. 使用FactoryBean定制实例化逻辑
3.8. The ApplicationContext
3.8.1. BeanFactory 还是 ApplicationContext?
3.8.2. 利用MessageSource实现国际化
3.8.3. 事件
3.8.4. 底层资源的访问
3.8.5. ApplicationContext在WEB应用中的实例化
3.9. 粘合代码和可怕的singleton
3.10. 以J2EE RAR文件的形式部署Spring ApplicationContext
3.11. 基于注解(Annotation-based)的配置
3.11.1. @Autowired
3.11.2. 基于注解的自动连接微调
3.11.3. CustomAutowireConfigurer
3.11.4. @Resource
3.11.5. @PostConstruct@PreDestroy
3.12. 对受管组件的Classpath扫描
3.12.1. @Component和更多典型化注解
3.12.2. 自动检测组件
3.12.3. 使用过滤器自定义扫描
3.12.4. 自动检测组件的命名
3.12.5. 为自动检测的组件提供一个作用域
3.12.6. 用注解提供限定符元数据
3.13. 注册一个LoadTimeWeaver
4. 资源
4.1. 简介
4.2. Resource接口
4.3. 内置 Resource 实现
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. 构造application context
4.7.2. Application context构造器中资源路径的通配符
4.7.3. FileSystemResource 说明
5. 校验,数据绑定,BeanWrapper,与属性编辑器
5.1. 简介
5.2. 使用Spring的Validator接口进行校验
5.3. 从错误代码到错误信息
5.4. Bean处理和BeanWrapper
5.4.1. 设置和获取属性值以及嵌套属性
5.4.2. 内建的PropertyEditor实现
6. 使用Spring进行面向切面编程(AOP)
6.1. 简介
6.1.1. AOP概念
6.1.2. Spring AOP的功能和目标
6.1.3. AOP代理
6.2. @AspectJ支持
6.2.1. 启用@AspectJ支持
6.2.2. 声明一个切面
6.2.3. 声明一个切入点(pointcut)
6.2.4. 声明通知
6.2.5. 引入(Introduction)
6.2.6. 切面实例化模型
6.2.7. 例子
6.3. 基于Schema的AOP支持
6.3.1. 声明一个切面
6.3.2. 声明一个切入点
6.3.3. 声明通知
6.3.4. 引入
6.3.5. 切面实例化模型
6.3.6. Advisor
6.3.7. 例子
6.4. AOP声明风格的选择
6.4.1. Spring AOP还是完全用AspectJ?
6.4.2. Spring AOP中使用@AspectJ还是XML?
6.5. 混合切面类型
6.6. 代理机制
6.6.1. 理解AOP代理
6.7. 以编程方式创建@AspectJ代理
6.8. 在Spring应用中使用AspectJ
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入
6.8.2. Spring中其他的AspectJ切面
6.8.3. 使用Spring IoC来配置AspectJ的切面
6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW)
6.9. 更多资源
7. Spring AOP APIs
7.1. 简介
7.2. Spring中的切入点API
7.2.1. 概念
7.2.2. 切入点运算
7.2.3. AspectJ切入点表达式
7.2.4. 便利的切入点实现
7.2.5. 切入点的超类
7.2.6. 自定义切入点
7.3. Spring的通知API
7.3.1. 通知的生命周期
7.3.2. Spring里的通知类型
7.4. Spring里的Advisor API
7.5. 使用ProxyFactoryBean创建AOP代理
7.5.1. 基础
7.5.2. JavaBean属性
7.5.3. 基于JDK和CGLIB的代理
7.5.4. 对接口进行代理
7.5.5. 对类进行代理
7.5.6. 使用“全局”通知器
7.6. 简化代理定义
7.7. 使用ProxyFactory通过编程创建AOP代理
7.8. 操作被通知对象
7.9. 使用“自动代理(autoproxy)”功能
7.9.1. 自动代理bean定义
7.9.2. 使用元数据驱动的自动代理
7.10. 使用TargetSource
7.10.1. 热交换目标源
7.10.2. 池化目标源
7.10.3. 原型目标源
7.10.4. ThreadLocal目标源
7.11. 定义新的Advice类型
7.12. 更多资源
8. 测试
8.1. 简介
8.2. 单元测试
8.2.1. Mock对象
8.2.2. 单元测试支持类
8.3. 集成测试
8.3.1. 概览
8.3.2. 使用哪个支持框架
8.3.3. 通用目标
8.3.4. JDBC测试支持
8.3.5. 常用注解
8.3.6. JUnit 3.8遗留支持
8.3.7. Spring TestContext Framework
8.3.8. PetClinic示例
8.4. 更多资源