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 ...
随机推荐
- 《javascript设计模式》笔记之第五章:单体模式
一:单体的基本结构: 最简单的单体,实际就是一个对象字面量: var Singleton = { attribute1: true, attribute2, method1: function() { ...
- 设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的值
最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u9 ...
- JDk安装及环境变量的配置
一.JDK的安装 1.打开下载好的安装包(我在这里附上一个百度云连接,https://pan.baidu.com/s/1o3nx0kbmecAISeneGqykLQ 提取码:jnw6) 傻瓜式安 ...
- Java中IO流文件读取、写入和复制
//构造文件File类 File f=new File(fileName); //判断是否为目录 f.isDirectory(); //获取目录下的文件名 String[] fileName=f.li ...
- 面向对象super内置函数(转)
super函数用来解决钻石继承. 一.python的继承以及调用父类成员 父类: class Base(object): def __init__(self): print("base in ...
- 浏览器详谈及其内部工作机制 —— web开发必读
浏览器介绍 如今,浏览器格局基本上是五分天下,分别是:IE.Firefox.Safari.Chrome.Opera,而浏览器引擎就更加集中了,主要是四大巨头:IE的浏览器排版引擎Trident,目前随 ...
- Vue-router 的练习
使用了vue-cli 生成了一套webpack的模版. 之后在其中练习 vue-router. 以下是一些记录. 1.动态路由的配置 import Vue from 'vue' import Rout ...
- EJB2.0教程 详解EJB技术及实现原理
EJB是什么呢?EJB是一个J2EE体系中的组件.再简单的说它是一个能够远程调用的javaBean.它同普通的javaBean有两点不同.第一点,就是远程调用.第二点,就是事务的功能,我们在EJB中声 ...
- Ubuntu下Postgres安装与配置
postgres8.4安装配置:1.安装postgres8.4~$ sudo apt-get install postgresql 2.修改超级管理员postgres密码:以系统用户运行psql~$ ...
- (二)mybaits之ORM模型
前言:为什么还没有进入到mybatis的学习呢?因为mybatis框架的核心思想就是ORM模型,所以好好了解一下ORM模型是有必要哒. ORM模型 ORM(Object Relational Ma ...