第一章 Spring之旅
1.1简化Java开发
为了降低Java开发的复杂性,Spring采取了四种关键策略:
- - 基于POJO的轻量级和最小侵入性编程;
- - 通过依赖注入和面向接口实现松耦合;
- - 基于切面和惯例进行声明式编程;
- - 通过切面和模板减少样板式代码。
1.1.1激发POJO的潜能
Spring的非侵入编程模型意味着POJO在Spring应用和非Spring应用中都可以发挥相同的作用。可以通过DI(依赖注入)来进装配POJO
1.1.2依赖注入
- 如果一个对象只通过接口(而不是具体实现或初始化过程)来表明依赖关系,那么这种依赖能够在对象本身毫不知情的情况下,用不同的具体实现进行替换。
- 装配:创建应用组件之间协作的行为通常称为装配。Spring可以采用XML、注解等装配方式。
- Spring应用上下文(Application Context):装载bean的定义并把它们组装起来。Spring应用上下文全权负责对象的创建和组装。
1.1.3应用切面
面向切面编程(AOP):允许你把遍布应用各处的功能分离出来形成可重用的组件。
1.1.4 使用模板消除样板式代码
Spring旨在通过模板封装来消除样板式代码。
1.2容纳你的Bean
Spring容器:负责创建对象,装配它们,配置它们并管理它们的整个生命周期,从生存(new)到死亡(finalize)。容器是Spring框架的核心。
1.2.1使用应用上下文
常用的Spring应用上下文类型:
① AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文。
② AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web 应用上下文。
③ ClassPathXmlApplicationcontext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
④ FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件中加载 上下文定义。
⑤ XmlWebApplicationContext:从Web应用下的一个或多个XML配置文件中加载上下文定义。
1.2.2 bean的生命周期

1.3俯瞰Spring风景线
1.3.1 Spring模块
- Spring核心容器:容器是Spring框架最核心的部分,管理Spring的应用中bean的创建、配置和管理。该模块还包含了Spring bean工厂,它为Spring提供了DI的功能。还提供了许多企业服务,如:E-mail、JNDI访问、EJB集成和调度。所有的Spring模块都构建于核心容器上。
- Spring的AOP模块(面向切面编程模块):提供了面向切面编程的支持
- 数据访问与集成:Spring的JDBC和DAO模块抽象了在JDBC编写中产生的大量的样板式代码。Spring的ORM模块建立在对DAO的支持之上,并为多个ORM框架提供了一种构建DAO的简便方式。但Spring并没有创建自己的ORM解决方案,而是对许多流行的ORM框架进行了集成。还包含了在JMS(Java Message Service)之上创建的Spring抽象层,它会使用消息以异步的方式与其他应用集成。
- Web与远程调用:提供了面向用户的web应用,还包含了多种构建与其他应用交互的远程调用方案。同时Spring还自带了一个远程调用框架:HTTP invoker。
- Instrume ntation:提供了为JVM提添加代理的功能。
- 测试:对于集成的测试,该模块为加载Spring应用上下文中的bean集合以及与Spring上下文中的bean进行交互提供了支持。
1.3.2 Spring Portfolio
- Spring Web Flow:Spring Web Flow建立于Spring MVC框架之上,它为基于流程的会话式Web应用提供了支持。
- Spring Web Service:Spring Web Service 提供了契约优先的Web Service模型,服务的实现都是为了满足服务的契约而编写的。
- Spring Security:利用Spring AOP,Spring Security 为Spring应用提供了声明式的安全机制。
- Spring Integration:Spring Integration提供了多种通用应用集成模式的Spring声明式风格实现。
- Spring Batch:提供对数据的批处理支持
- Spring Data:Spring Data使得在Spring中使用任何数据库都变得非常容易,Spring Data为持久化提供了一种简单的编程模型。
- Spring Social:Spring Social是一个社交网络扩展模块,它可以帮助通过REST API连接Spring应用,其中有些Spring应用可能原本并没有任何社交方面的功能目标。
- Spring Mobile:Spring Mobile 是Spring MVC新的扩展模块,用于支持移动Web应用开发。
- Spring for Android:这个项目,旨在通过Spring框架为开发基于Android设备的本地应用提供某些简单的支持。
- Spring Boot:该项目,以Spring的视角,依赖于自动配置技术,大量简化Spring本身的样板式代码。