Spring - Java/J2EE Application Framework

Spring Framework 开发参考手册

Version 1.1

Spring 参考手册由众多Spring爱好者共同协作完成.本文档的翻译是在网络上协作进行, 也会不断根据Spring文档的升级进行逐步更新 - 在线文档 提供此文档的目的是为了减缓学习Spring 的曲线,更好的让优秀的技术扩大在中文世界的使用。 该文档并非可以代替原文档使用,我们建议所有有能力的读者都直接阅读 英文原文

如果您对翻译有所异议,请反馈给 Spring中文论坛[http://spring.jactiongroup.net]

项目控制: https://jactiongroup2.dev.java.net

(Public Review)


目录

前言
1. 简介
1.1. 概览
1.2. 使用场景
2. 项目背景
2.1. 反向控制(IoC)/依赖注入
3. Beans, BeanFactory和ApplicationContext
3.1. 简介
3.2. BeanFactory 和 BeanDefinitions - 基础
3.2.1. BeanFactory
3.2.2. BeanDefinition
3.2.3. bean的类
3.2.3.1. 通过构造函数创建bean
3.2.3.2. 通过静态工厂方法创建Bean
3.2.3.3. 通过实例工厂方法创建bean
3.2.4. Bean的标志符 (id与name)
3.2.5. Singleton的使用与否
3.3. 属性,合作者,自动装配和依赖检查
3.3.1. 设置bean的属性和合作者
3.3.2. 深入Bean属性和构造函数参数
3.3.3. 方法注入
3.3.3.1. Lookup方法注入
3.3.3.2. 任意方法的替换
3.3.4. 使用 depends-on
3.3.5. 自动装配协作对象
3.3.6. 依赖检查
3.4. 自定义bean的本质特征
3.4.1. 生命周期接口
3.4.1.1. InitializingBean / init-method
3.4.1.2. DisposableBean / destroy-method
3.4.2. 了解自己
3.4.2.1. BeanFactoryAware
3.4.2.2. BeanNameAware
3.4.3. FactoryBean
3.5. 子bean定义
3.6. BeanFactory之间的交互
3.6.1. 获得一个FactoryBean而不是它生成的bean
3.7. 使用BeanPostprocessors定制bean
3.8. 使用BeanFactoryPostprocessors定制bean工厂
3.8.1. PropertyPlaceholderConfigurer
3.8.2. PropertyOverrideConfigurer
3.9. 注册附加的定制PropertyEditor
3.10. 介绍ApplicationContext
3.11. ApplicationContext中增加的功能
3.11.1. 使用MessageSource
3.11.2. 事件传递
3.11.3. 在Spring中使用资源
3.12. 在ApplicationContext中定制行为
3.12.1. ApplicationContextAware标记接口
3.12.2. BeanPostProcessor
3.12.3. BeanFactoryPostProcessor
3.12.4. PropertyPlaceholderConfigurer
3.13. 注册附加的定制PropertyEditors
3.14. 用方法调用的返回值来设置bean的属性
3.15. 从一个web应用创建ApplicationContext
3.16. 粘合代码和罪恶的singleton
3.16.1. 使用SingletonBeanFactoryLocator和ContextSingletonBeanFactoryLocator
4. 属性编辑器,数据绑定,校验与BeanWeapper(Bean封装)
4.1. 简介
4.2. 使用DataBinder进行数据绑定
4.3. Bean处理与BeanWrapper
4.3.1. 设置和提取属性以及嵌套属性
4.3.2. 内建的(PropertyEditors)和类型转换
4.3.3. 其他特性
5. Spring AOP: Spring之面向方面编程
5.1. 概念
5.1.1. AOP概念
5.1.2. Spring AOP的功能
5.1.3. Spring中AOP代理
5.2. Spring的切入点
5.2.1. 概念
5.2.2. 切入点的运算
5.2.3. 实用切入点实现
5.2.3.1. 静态切入点
5.2.3.2. 动态切入点
5.2.4. 切入点超类
5.2.5. 自定义切入点
5.3. Spring的通知类型
5.3.1. 通知的生命周期
5.3.2. Spring中通知类型
5.3.2.1. Interception around advice
5.3.2.2. Before通知
5.3.2.3. Throws通知
5.3.2.4. After Returning通知
5.3.2.5. Introduction通知
5.4. Spring中的advisor
5.5. 用ProxyFactoryBean创建AOP代理
5.5.1. 基本概要
5.5.2. JavaBean的属性
5.5.3. 代理接口
5.5.4. 代理类
5.6. 便利的代理创建方式
5.6.1. TransactionProxyFactoryBean
5.6.2. EJB 代理
5.7. 使用ProxyFactory以编程的方式创建AOP代理
5.8. 操作被通知对象
5.9. 使用“autoproxy”功能
5.9.1. 自动代理的bean定义
5.9.1.1. BeanNameAutoProxyCreator
5.9.1.2. DefaultAdvisorAutoProxyCreator
5.9.1.3. AbstractAdvisorAutoProxyCreator
5.9.2. 使用元数据驱动的自动代理
5.10. 使用TargetSources
5.10.1. 可热交换的目标源
5.10.2. 支持池的目标源
5.10.3. Prototype目标源
5.11. 定义新的通知类型
5.12. 进一步的资料和资源
5.13. 路标
6. 集成AspectJ
6.1. 概述
6.2. 使用Spring IoC配置AspectJ
6.2.1. “单例”aspect
6.2.1.1. 举例
6.2.1.2. 排序问题
6.2.2. 非单例aspect
6.2.3. 3.4 转向(Gotchas)
6.3. 使用AspectJ切点定位Spring的建议
6.4. Spring提供给AspectJ的aspect
7. 事务管理
7.1. Spring事务抽象
7.2. 事务策略
7.3. 编程式事务管理
7.3.1. 使用TransactionTemplate
7.3.2. 使用PlatformTransactionManager
7.4. 声明式事务管理
7.4.1. BeanNameAutoProxyCreator,另一种声明方式
7.5. 编程式还是声明式事务管理
7.6. 你需要应用服务器管理事务吗?
7.7. 公共问题
8. 源代码级的元数据支持
8.1. 源代码级的元数据
8.2. Spring的元数据支持
8.3. 集成Jakarta Commons Attributes
8.4. 元数据和Spring AOP自动代理
8.4.1. 基础
8.4.2. 声明式事务管理
8.4.3. 缓冲池技术
8.4.4. 自定义的元数据
8.5. 使用attribute尽可能减少MVC web层配置
8.6. 元数据attribute的其它使用
8.7. 增加对其它的元数据API的支持
9. DAO支持
9.1. 简介
9.2. 一致的异常层次
9.3. 一致的DAO支持抽象类
10. 使用JDBC进行数据访问
10.1. 简介
10.2. 使用JDBC核心类控制基本的JDBC处理和错误处理
10.2.1. JdbcTemplate
10.2.2. 数据源
10.2.3. SQLExceptionTranslator
10.2.4. 执行Statement
10.2.5. 执行查询
10.2.6. 更新数据库
10.3. 控制如何连接数据库
10.3.1. DataSourceUtils
10.3.2. SmartDataSource
10.3.3. AbstractDataSource
10.3.4. SingleConnectionDataSource
10.3.5. DriverManagerDataSource
10.3.6. DataSourceTransactionManager
10.4. JDBC操作的Java对象化
10.4.1. SqlQuery
10.4.2. MappingSqlQuery
10.4.3. SqlUpdate
10.4.4. StoredProcedure
10.4.5. SqlFunction
11. 使用ORM工具进行数据访问
11.1. 简介
11.2. Hibernate
11.2.1. 资源管理
11.2.2. 在 Application Context中的Bean 声明
11.2.3. 反向控制: 模板和回调的使用
11.2.4. 利用AOP拦截器(Interceptor)取代Template
11.2.5. 编程式的事务划分
11.2.6. 声明式的事务划分
11.2.7. 事务管理策略
11.2.8. 使用Spring管理的应用Bean
11.2.9. 容器资源 vs 本地资源
11.2.10. 举例
11.3. JDO
11.4. iBATIS
11.4.1. 1.3.x和2.0的概览和区别
11.4.2. 创建SqlMap
11.4.3. 使用 SqlMapDaoSupport
11.4.4. 事务管理
12. Web框架
12.1. Web框架介绍
12.1.1. MVC实现的可扩展性
12.1.2. Spring MVC框架的特点
12.2. 分发器(DispatcherServlet)
12.3. 控制器
12.3.1. AbstractController 和 WebContentGenerator
12.3.2. 其它的简单控制器
12.3.3. MultiActionController
12.3.4. 命令控制器
12.4. 处理器映射
12.4.1. BeanNameUrlHandlerMapping
12.4.2. SimpleUrlHandlerMapping
12.4.3. 添加HandlerInterceptors
12.5. 视图与视图解析
12.5.1. ViewResolvers
12.6. 使用本地化信息
12.6.1. AcceptHeaderLocaleResolver
12.6.2. CookieLocaleResolver
12.6.3. SessionLocaleResolver
12.6.4. LocaleChangeInterceptor
12.7. 主题使用
12.8. Spring对multipart(文件上传)的支持
12.8.1. 介绍
12.8.2. 使用MultipartResolver
12.8.3. 在一个表单中处理multipart
12.9. 处理异常
12.10. 共同用到的工具
12.10.1. 关于pathmatcher的小故事
13. 集成表现层
13.1. 简介
13.2. 和JSP & JSTL一起使用Spring
13.2.1. 视图解析器
13.2.2. 普通JSP页面和JSTL
13.2.3. 其他有助于开发的标签
13.3. Tiles的使用
13.3.1. 所需的库文件
13.3.2. 如何集成Tiles
13.3.2.1. InternalResourceViewResolver
13.3.2.2. ResourceBundleViewResolver
13.4. Velocity
13.4.1. 所需的库文件
13.4.2. 分发器(Dispatcher Servlet)上下文
13.4.3. Velocity.properties
13.4.3.1. 模版位置
13.4.3.2. velocity.properties示例
13.4.3.3. Web应用的根目录标记
13.4.3.4. 另一种可选的属性规范
13.4.3.5. 缺省配置(文件资源载入)
13.4.4. 视图配置
13.4.5. 创建Velocity模版
13.4.6. 表单处理
13.4.6.1. 验证错误
13.4.6.2. Velocity的宏
13.4.6.3. 将出错消息和HTML的域关联起来
13.4.7. 总结
13.5. XSLT视图
13.5.1. My First Words
13.5.1.1. Bean的定义
13.5.1.2. 标准MVC控制器代码
13.5.1.3. 把模型数据转换成XML文档
13.5.1.4. 定义视图属性
13.5.1.5. 文档转换
13.5.2. 总结
13.6. 文档视图 (PDF/Excel)
13.6.1. 简介
13.6.2. 配置和安装
13.6.2.1. 文档视图定义
13.6.2.2. 控制器代码
13.6.2.3. 用于Excel视图的视图子类化
13.6.2.4. 用于PDF视图的视图子类化
13.7. Tapestry
13.7.1. 架构
13.7.2. 实现
13.7.2.1. 应用上下文示例
13.7.2.2. 在Tapestry页面中获取bean
13.7.2.3. 向Tapestry暴露应用上下文
13.7.2.4. 组件定义文件
13.7.2.5. 添加抽象访问方法
13.7.3. 小结
14. JMS支持
14.1. 介绍
14.2. 域的统一
14.3. JmsTemplate
14.3.1. ConnectionFactory
14.3.2. 事务管理
14.3.3. Destination管理
14.4. 使用JmsTemplate
14.4.1. 发送消息
14.4.2. 同步接收
14.4.3. 使用消息转换器
14.4.4. SessionCallback和ProducerCallback
15. EJB的存取和实现
15.1. 访问EJB
15.1.1. 概念
15.1.2. 访问本地的无状态Session Bean(SLSB)
15.1.3. 访问远程的无状态Session Bean(SLSB)
15.2. 使用Spring提供的辅助类实现EJB组件
16. 通过Spring使用远程访问和web服务
16.1. 简介
16.2. 使用RMI提供业务
16.2.1. 使用RmiServiceExporter提供业务
16.2.2. 客户端连接业务
16.3. 使用Hessian或Burlap通过HTTP远程调用业务
16.3.1. 为Hessian建立DispatcherServlet
16.3.2. 使用HessianServiceExporter提供你的bean
16.3.3. 客户端连接业务
16.3.4. 使用Burlap
16.3.5. 在通过Hessian或Burlap输出的业务中应用HTTP基本认证
16.4. 使用HTTP调用器输出业务
16.4.1. 输出业务对象
16.4.2. 在客户端连接业务
16.5. 在选择这些技术时的一些考虑
17. 使用Spring邮件抽象层发送Email
17.1. 简介
17.2. Spring邮件抽象结构
17.3. 使用Spring邮件抽象
17.3.1. 可插拔的MailSender实现
18. 使用Quartz或Timer完成时序调度工作
18.1. 简介
18.2. 使用OpenSymphony Quartz Scheduler
18.2.1. 使用JobDetailBean
18.2.2. 使用MethodInvokingJobDetailFactoryBean
18.2.3. 使用triggers和SchedulerFactoryBean来包装任务
18.3. 使用JDK Timer支持类
18.3.1. 创建定制的timers
18.3.2. 使用MethodInvokingTimerTaskFactoryBean
18.3.3. 包装:使用TimerFactoryBean来建立tasks
A. Spring's beans.dtd
B. 结束语
B.1. 项目手记
B.2. 版权声明
B.3. 翻译团队
B.4. 项目进度