java框架学习之路——Spring的体系结构

Spring的体系结构
Spring是一个开源的轻量级框架
Spring项目开发流程:
创建项目——>添加必须的类库jar包——>创建源文件编程调用库——>创建bean的配置文件——>运行调试
核心特征: 
1、AOP:面向切面编程 
2、IOC:控制反转,把对象的创建交给Spring管理,依赖注入DI,对象生成放在了XML定义
3、跨越javaEE三层
    Web层:SpringMVC
    Service层:Spring IOC

    Dao层:jdbcTemplate


如上图,Spring 框架的模块分为核心容器(Core Container)、数据访问集成(DataAccess/Integration)、Web(MVC/Remoting)和其他模块四类、共约 20 个模块

核心容器
核心容器,即图里的最下面四个模块,分别是核心,Bean,上下文和表达式语言模块,其中
  核心模块提供了框架的基本组成部分,包括 IoC 和依赖注入功能。
  Bean 模块提供 BeanFactory,它是一个工厂模式的复杂实现。
  上下文模块建立在由核心和 Bean 模块提供的坚实基础上,它是访问定义和配置的任何对象的媒介。ApplicationContext 接口是上下文模块的重点。
  表达式语言模块在运行时提供了查询和操作一个对象图的强大的表达式语言。
数据访问/集成
数据访问/集成层包括 JDBC,ORM,OXM,JMS 和事务处理模块,其中:
  JDBC 模块提供了删除冗余的 JDBC 相关编码的 JDBC 抽象层。
  ORM 模块为流行的对象关系映射 API,包括 JPA,JDO,Hibernate 和 iBatis,提供了集成层。
  OXM 模块提供了抽象层,它支持对 JAXB,Castor,XMLBeans,JiBX 和 XStream的对象/XML 映射实现。
  Java 消息服务 JMS 模块包含生产和消费的信息的功能。
  事务模块为实现特殊接口的类及所有的 POJO 支持编程式和声明式事务管理。
Web
Web 层由 Web,Web-MVC,Web-Socket 和 Web-Portlet 组成,其中:
  Web 模块提供了基本的面向 web 的集成功能,例如多个文件上传的功能和使用 , servlet 监听器和面向 web 应用程序的上下文来初始化 IoC 容器。
  Web-MVC 模块包含 Spring 的模型-视图-控制器(MVC),实现了 web 应用程序。
  Web-Socket 模块为 WebSocket-based 提供了支持,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。
  Web-Portlet 模块提供了在 portlet 环境中实现 MVC,并且反映了 Web-Servlet 模块的功能。
其他模块
还有其他一些重要的模块,像 AOP,Aspects,Instrumentation,Web 和测试模块,其中,
  AOP 模块提供了面向方面的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,它实现了应该分离的功能。
  Aspects 模块提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。
  Instrumentation 模块在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。
  Messaging 模块为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的STOMP 信息。

  测试模块支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。

                                                                                                                                                              

Spring IOC容器:

分为Spring BeanFactory容器和Spring ApplicationContext容器

ApplicationContext 容器包括 BeanFactory 容器的所有功能,所以通常建议超过 BeanFactory。BeanFactory 仍然可以用于轻量级的应用程序,如移动设备或基于 applet 的应用程序,其中它的数据量和速度是显著。
Spring IOC容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans
Bean容器组件,整个IoC容器核心,所谓Bean容器,就是这里装着Bean对象以及所需要的各种数据。其中BeanFactory是纯粹的Bean容器,用来存储描述Bean,无关其他环境,而像ApplicationContext,也是Bean容器,但它和应用环境息息相关,所以被称为应用上下文(环境)更恰当,ApplicationContext不仅有着eanFactory“血统”,同时也继承了EnvironmentCapable、MessageSource、ApplicationEventPublisher,即扩展了其许多额外功能,而其实现类则是和具体应用相关了

IOC容器底层原理:

(1)、xml配置文件

(2)、dom4j解决xml

(3)、工厂设计模式

(4)、反射

IOC操作:
1、 IOC配置文件方式
2、 IOC的注解方式
整个工作流程:
ApplicationContext context = new ClassPathXmlApplicationContext(path);
0.新建ApplicationContext容器对象(并没有初始化);
1.ResourceLoader加载并解析资源文件 ———> 获得Resource对象;
2.BeanDefinitionReader读取Resource对象,将其读到的bean元素数据封装到 
BeanDefinition组件中;
3.BeanDefinitionRegister将所有的BeanDefinition注册到BeanFactory中 
(BeanDefinition是容器内部Bean的基本数据结构,BeanFactory维持着一个 
BeanDefinition Map);
4.容器初始化开始,容器初始化工作由AbstractApplicationContext提供的 
refresh()方法完成
***context作为应用环境上下文功能完成,程序此后就可以通过context的geBean 
(String beanName)方法获得path文件声明定义的bean对象

猜你喜欢

转载自blog.csdn.net/Jack__iT/article/details/79950401