spring arch

2.5 6

6个模块

使用场景,典型应用

整合其他框架

远程使用场景

2.x以前是单一spring.jar,拆成n个项目(bundle),向ogsi靠拢

jdk5+开发和编译构建,不支持1.4

3.x

模块

  • DAO/ORM/JEE等划归到一起,成为“数据访问/集成”部分
  • Web层突出了自己的MVC(Servlet)和Portlet
  • 核心容器增加表达式语言
  • 测试放到整个架构中

典型全应用场景也相应变化

Spring middle-tier using a third-party web framework

Remoting usage scenario

新特性及功能增强 很多接口增加了泛型的支持,如 getBean() 后可以不用再转型了,任务执行器继承了 Java5 的 Executor

SpEL 配置文件/注解支持el JavaConfig + SpEL

对象到 XML的映射 从子项目移入核心包的特性,OXM,来自 WebServices 子项目,提供 JAXB、XmlBeans 以及 XStream 等方式的实现

全面的 REST 支持 基于 HttpClient提供RestTemplate 支持全功能的 REST 客户端

注解声明式验证框架 自动发现 HibernateValidator 的 jar,设置为对 JSR303 注解验证框架的实现

1
2
3
4
5
6
7
8
public class Person { 
    @NotNull 
    @Max(64) 
    private String name; 

    @Min(0) 
    private int age; 
} 

自带HSQL/H2支持,测试和演示时数据库,应该用起来更方便

  • SpEL

    Bean 定义中用的表达式解析器,属性值中通过 #{…} 语法,引用嵌套的 Bean 结构(如其他 Bean 的属性),就像引用环境数据一样

  • 对基于注解的组件的扩展支持

    对配置类和注解工厂方法(JavaConfig)的增强,@Value,通过动态表达式 #{…},或静态占位符 ${…},注入配置值

  • 强大的注解模型

    允许通过元注解创建 “快捷” 注解,比如用自定义的注解类别,指代默认的作用域和事务特性

  • 标准化的依赖注入注解

    依赖注入 JSR-330 规范,用 @Inject 替代 @Autowired

  • 基于注解的声明式模型验证:

    自动发现和配置符合 JSR-303 规范的 Bean 验证提供程序(如 HiernateValidator4.0)

    • 增强的绑定和注解驱动式格式化

      格式化可以通过注解驱动,类似 JSR-303 的约束声明风格

  • REST 支持

    SpringMVC 内置 REST 支持,@PathVariable ,内容协商(content negotiation)驱动的视图展示。RestTemplate 模板类,提供客户端 REST 支持

  • 对象 XML 映射(OXM)

    移入 Spring 框架核心的 Spring Web Services

  • 下一代调度支持

    新的任务调度器(TaskScheduler)和触发器(Trigger)机制提供一等的 cron 支持

Spring3.0 支持 Java5 和 Servlet2.4 及更新版本,兼容 JavaEE6 运行时环境(如 GlassFish v3)和 JPA2.0 等,但不再支持旧版 Java