Spring的体系结构

来源:互联网 发布:手机拍电影特效软件 编辑:程序博客网 时间:2024/06/11 01:16

这里写图片描述

这里写图片描述

重要的模块介绍:
1、Core Container(核心容器)

  • Beans模块:提供BeanFactory,是工厂模式的经典实现,Spring将管理对象称为Bean。
  • Core核心模块:提供了Spring框架的基本组成部分,包括Ioc(控制反转)和DI(依赖注入)功能。
  • Context上下文模块:构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。

Spring的IoC容器
所谓的IoC是指在程序的设计中,实例不再由调用者来创建,而是由Spring容器来创建。Spring容器会负责控制程序之间的关系,而不是由程序代码直接控制,这样控制权由应用代码转移到了外部容器,控制权发生了反转,也就是Spring的IoC思想。Spring为我们提供了两种IoC容器,分别是BeanFactory和ApplicationContext。

(1)BeanFactory
BeanFactory由org.springframework.beans.factory.BeanFactory接口定义,提供完整的IoC服务支持。它负责初始化各种Bean,并调用它们的声明周期方法。他有多个实现子类比如XmlBeanFactory

(2)ApplicationContext
ApplicationContext是BeanFactory的子接口,也被称为应用上下文,由org.springframework.context.ApplicationContext定义,它不仅提供BeanFactory所有的功能,还以一种更见面向框架的方式增强了BeanFactory的功能。主要体现在Context包使用分层和有继承关系的上下文类,具体情况如下:
1、MessageSource,提供对il8n消息的访问
2、资源访问,例如URL和文件
3、事件传递给实现了ApplicationListener接口的Bean
4、载入多个(有继承关系)上下文类,使得每一个上下文类都专注于一个特定的层次

使用BeanFactory加载:如果Bean的某一个属性没有注入,使用BeanFactory加载后,在第一次调用getBean()方法时会抛出异常;
使用ApplicationContext加载:使用ApplicationContext加载会在初始化时自检,这样有利于检查所依赖属性是否注入。在开发中,一般使用ApplicationContext,只有在系统资源较少时,才会考虑使用BeanFactory。

2、Data Access/Integration模块

  • DAO模块: DAO (Data Access Object)提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 并且,JDBC封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Java objects)都适用。
    (1)JDBC模块:提供了一个JDBC的抽象层,大幅度地减少了在开发过程中对数据库操作的代码。
    (2)Transactions模块:支持编程和声明式事务管理实现特殊接口类,并且对所有的POJO都是适用。

编程式:
声明式:

  • ORM模块: ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA(Java Persistence API)JDO(Java Data Object )HibernateiBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。(在ORM模块,Spring没有提供自己的实现)

3、Spring AOP模块:
Spring的 AOP 封装包提供了符合AOP Alliance规范的面向方面的编程实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。而且,利用source-level的元数据功能,还可以将各种行为信息合并到你的代码中。

4、Web模块:

  • Web模块:提供了基本的Web开发集成特性,例如:多文件上传功能、使用的Servlet监听器的IoC容器初始化以及Web应用上下文。
  • Servlet模块(Spring Web MVC):Spring中的MVC封装包提供了Web应用的Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和Web Form之间。并且,还可以借助Spring框架的其他特性。

5、Asprects模块:
提供与AspectJ的集成,是一个功能强大且成熟的面向切面编程框架。

0 0
原创粉丝点击