Spring 结构
Spring框架主要由7大模块组成,它们提供了企业级开发需要的所有功能,而且每个模块都可以单独使用,也可以和其它模块组合使用,灵活且方便的部署可以使开发的程序更加简单灵活。

核心模块
Spring Core模块是Spring的核心容器,它实现了IoC模式、提供了Spring框架的基础功能。在模块中包含最重要的BeanFactory类是Spring的核心类,负责对JavaBean的配置与管理。它采用Factory模式实现了IoC容器即依赖注入。
Content模块
Spring Content模块继承BeanFactory(或者说Spring核心)类,并且添加了事件处理、国际化、资源装载、透明装载以及数据效验等功能。它还提供了框架式的bean的访问模式和很多企业级的功能,如JNDI访问、支持EJB、远程调用、继承模板框架、Email和定时任务调度等。
AOP 模块
Spring集成了所有AOP功能。通过事务管理可以使任意Spring管理的对象AOP化。Spring提供了标准Java语言编写的AOP框架,它的大部分内容都是根据AOP联盟的API而开发的。它使应用程序抛开了EJB的复杂性,但拥有传统EJB的关键功能。
DAO模块
DAO模块提供了JDBC的抽象层,简化了数据厂商的异常错误(不再从SQLException继承大批代码),大幅减少了代码的编写,并且提供了声明式事务和编程式事务的支持。
O/R映射模块
Spring ORM模块提供了对现有ORM框架的支持,各种流行的ORM框架已经做得非常成熟,并且拥有大规模的市场(如Hibernate)。Spring没必要开发新的ORM工具,但是它对Hibernate提供了完美的整合功能,同时也支持其它的ORM工具。
Web模块
Spring Web模块建立在Spring Context基础之上,它提供了Servlet监听器的Context 和Web 应用的上下文。对现有的Web框架如JSF、Tapestry、Struts2等提供了集成。
MVC模块
Spring MVC模块建立在Spring核心功能之上,这使它拥有Spring框架的所有特性,能够适应多种视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑清晰的分离。
使用BeanFactory管理bean
BeanFactory采用了Java经典的工厂模式,通过从XML配置文件或属性文件(.properties)中读取JavaBean的定义,来实现JavaBean的创建、配置和管理。BeanFactory有很多实现类,其中XmlBeanFactory可以通过流行的XML文件格式读取配置信息里装载JavaBean。BeanFactory在Spring中的作用:

装载bean:
Resource resource = new ClassPathResource("applicationContext.xml"); //装载配置文件
BeanFactory factory = new XmlBeanFactory(resource) ;
Test test = factory.getBean("test") ; //获取bean
ClassPathResource读取XML文件并传参给XmlBeanFactory, applicationContext.xml文件中的代码包含一个bean标签
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN“ "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="test" class="com.model.Test">
</beans>
在<beans>标签中通过<bean>标签定义JavaBean的名称和类型,在程序代码中利用BeanFactory的getBean()方法获取JavaBean的实例并且向上转为需要的接口类型,这样在容器中就开始了这个JavaBean的生命周期。BeanFactory在调用getBean()方法之前不会实例化任何对象,只有在需要创建JavaBean的实例对象时,才会为其分配资源空间。这使它更适合于物理资源受限的应用程序,尤其是内存限制的环境。Spring中bean的声明周期包括实例化JavaBean、初始化JavaBean、使用JavaBean和销毁JavaBean4个阶段。
ApplicationContext 的应用
BeanFactory实现了IoC控制,所以它可以称为IoC容器,而ApplicationContext扩展了BeanFactory容器并添加了对I18N(国际化)、声明周期事件的发布监听等更加强大的功能,使之成为Spring中强大的企业级IoC容器。在这个容器中提供了对其它框架和EJB的集成、远程调用、WebService、任务调度和JNDI等企业级服务,同时也允许使用更多的声明式方式来得到需要的功能。在Spring应用中大多采用ApplicationContext容器来开发企业级的程序。
ApplicationContext 接口有3个实现类,可以实例化其中任何一个类来创建Spring的ApplicationContext容器。第一个类是ClassPathXmlApplicationContext类。它从当前路径中检索配置文件并装载它来创建容器的实例。语法:
ApplicationContext context = new ClassPathXMLApplicationContext(String configLocation);
其中的configLocation参数指定了Spring配置文件的名称和位置。
第二个实现类是:FileSystemXMLApplicationContext类。它和ClassPathXMLApplicationContext类的区别在于读取Spring配置文件的方式,它不再从类路径中获取配置文件,而是通过参数指定配置文件的位置,可以获取类路径之外的资源。语法:
ApplicationContext context = new FileSystemXMLApplicationContext(String configLocaation);
第三个实现类是:WebApplicationContext类。它是Spring的Web应用容器,有两种方法可以在Servlet中使用WebApplicationContext。第一种方法是在Servlet的web.xml稳健者配置Spring的ContextLoaderListener监听器;第二种方法是修改web.xml配置文件,在配置文件中添加一个Servlet,定义使用Spring的org.springframework.web.context.ContextLoaderServlet类。
JavaBean在ApplicationContext容器和BeanFactory容器中的生命周期基本相同。如果在JavaBean中实现了ApplicationContext接口,容器会调用JavaBean的setApplicationContext()方法将容器本身注入到JavaBean中,使JavaBean包含容器的应用。
Spring 结构的更多相关文章
- MyBatis学习系列三——结合Spring
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...
- SpringMVC入门二: 1规范结构, 2简单整合MyBatis
昨天拿springMVC写的helloworld结构不好, 这次先调整一下体系结构 , 然后简单整合一下MyBatis spring的配置还是以注解为主, 不过MyBatis的映射文件什么的还是拿xm ...
- Spring笔记01_下载_概述_监听器
目录 Spring笔记01 1.Spring介绍 1.1 Spring概述 1.2 Spring好处 1.3 Spring结构体系 1.4 在项目中的架构 1.5 程序的耦合和解耦 2. Spring ...
- spring源码解析1--spring整体架构
一.Spring整体架构图 关于Spring的基本介绍就不再赘述了,先展示Spring框架的整体架构图如下示: 二.Spring结构介绍 Spring主要分为Core Container.Test.D ...
- Spring 学习——Spring框架结构、概念
maven项目结构 记忆:在一个项目中,project下一层级时src,也就是源文件,所有需要进行编译的文件都是在这个目录下,其实也就是这一个目录,然后向下扩展.在src目录下,存在main文件夹,里 ...
- spring项目中web-inf下不能引用页面资源
1.spring项目结构 2.spring结构说明 web-inf目录是不对外开放的,外部没办法直接访问到(即通过url访问),只有通过映射来访问,如映射一个action或servlet通过服务器端跳 ...
- spring framework体系结构及模块jar依赖关系
本文对于Spring的JAR包使用和配置,结合网友材料以spring 4.3.6.RELEASE版本为例,介绍spring框架结构和各模块对应JAR包以及模块间JAR依赖关系. 注:不同版本JAR包依 ...
- Spring学习总结(1)- IOC
一.Spring框架概述 Spring是一个开源免费的框架,为了解决企业应用开发的复杂性而创建.Spring框架是一个轻量级的解决方案,可以一站式地构建企业级应用.Spring是模块化的,所以可以只使 ...
- 初识SpringMvc
初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...
随机推荐
- 使用request实现手工输入验证码登录
我们的目标网站是这个http://awehome.com.cn,登录页面是这个http://awehome.com.cn/tenant/login import requests import jso ...
- Super Mario(线段树离线区间k值)
以前见过这题,没做出来,知道是离线处理,这次仔细想了下, 首先把出现的高度都map离散化一下,以离散化出来的数目g建树,把每个位置都开俩个vector,一个存以这个位置为L的询问,一个存以这个位置为R ...
- c# 定时器 自动执行
//下面讲一个打开窗体定时执行按钮的东西 private void Form1_Load(object sender, EventArgs e) { System.Timers.Timer pTime ...
- log4j2 日志框架小记
这两天开始学习日志框架了, 把常用的学习一下,记录一下.上篇日志写了log4j-----https://www.cnblogs.com/qiaoyutao/p/10995895.html今天就总结一下 ...
- 用户登陆界面(jquery)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Android - Zxing实现二维码的扫描与生成
Zxing: Zxing是一个开放源码,用java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.可以实现使用手机内置摄像头完成条形码的扫描以及解码. github: ...
- git 设置了ssh key 还是需要输入账户和密码
参考这篇文章https://blog.csdn.net/shahuhu000/article/details/86625987 git remote remove origingit remote a ...
- 压力测试工具segie的使用
压力测试工具segie的使用 使用文档参考地址:https://www.joedog.org/siege-manual/ siege4地址:http://download.joedog.org/sie ...
- js数组去重方法包括Es6(方法有很多,但是需要考虑兼容性和数据类型场景)
1.Es6提供的方法 <script type="text/javascript"> //ES6里新添加了两个方法,set(set是一种新的数据结构,它可以接收一个数组 ...
- elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解
一.快速入门1. 查看集群的健康状况http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状 ...