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

分类:

java框架学习

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对象

原文地址:http://blog.51cto.com/13550895/2113043

时间: 2024-12-08 21:29:02

java框架学习之路——Spring的体系结构的相关文章

java框架学习之路之一

面对日益繁重的工作,我们的时间被老板压缩的快没有啦,但是自己想学新的东西,还不想只学基础知识,那现在应该怎么办呢? 所以,我向大家推荐一个东西,我学了一年多,在这一年多当中,学习了很多的知识.但是让我学到知识最多的知识是从网上买的一些教程,里面什么课程都有,一边工作,一边学习新的知识,让我面对项目不再害怕. 朋友向我推荐了一个好的出处:http://url.cn/TgrIZT,说是200元学习卡免费限量领取,刚开始我也不信,当我注册完之后,我一看,里面全是视频教程,我就买了一些教程,买完才知道,

JAVA框架整合(struct+spring+jpa)之utf8mb4

基于mysql数据库整合框架时出现的数据库字符编码的问题. 解决办法:数据库驱动的版本太高,换成低版本的,主要还是你的架包太不是最新版本,出现的兼容性问题. JAVA框架整合(struct+spring+jpa)之utf8mb4,布布扣,bubuko.com

java痛苦学习之路[十二]JSON+ajax+Servlet JSON数据转换和传递

1.首先客户端需要引入 jquery-1.11.1.js 2.其次javaweb工程里面需要引入jar包  [commons-beanutils-1.8.0.jar.commons-collections-3.1.jar.commons-lang-2.4.jar.commons-logging-1.1.3.jar.ezmorph-1.0.6.jar.json-lib-2.3-jdk15.jar] 3.客户端js端代码 4.servlet 服务器,映射的路径CardColl 以上就是整个过程,如果

java痛苦学习之路[二] ---JSONObject使用

一.Strut2必须引入的包 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar 5.ezmorph.jar 6.json-lib-2.2.2-jdk15.jar 当然除了这些包,strut2基础包也得引入 struts2-core-2.1.6.jar freemarker-2.

java框架学习系列

这篇文章的目的主要是作为一个框架学习的索引,方便查找及顺序学习 一.struts2学习 1. java之struts框架入门教程 2. java之struts2的执行流程讲解 3. java之struts2的配置讲解 4. java之struts2的action的创建方式 5. java之struts2的数据处理 6. java之struts2的action优化配置 7. java之struts2的ThreadLocal和ActionContext 8. java之struts2之Servlet

Java学习之路-Spring的HttpInvoker学习

Hessian和Burlap都是基于HTTP的,他们都解决了RMI所头疼的防火墙渗透问题.但当传递过来的RPC消息中包含序列化对象时,RMI就完胜Hessian和Burlap了. 因为Hessian和Burlap都是采用了私有的序列化机制,而RMI使用的是Java本身的序列化机制.如果数据模型非常复杂,那么Hessian/Burlap的序列化模型可能就无法胜任了. Spring开发团队意识到RMI服务和基于HTTP的服务之前的空白,Spring的HttpInvoker应运而生. Spring的H

java入门学习之路

java是面向对象的编程,个人觉得记忆比较重要. 第一阶段 java基础部分 unix开发环境 熟练掌握开发中常用的操作系统linux的安装及使用:掌握文件系统.网络.用户管理方法:能熟练使用vi和vim进行文件编辑:能在unix环境下进行文件查找.权限控制.能熟练配置用户使用环境及开发生产环境. (1)java基础编程 了解java的运行环境,java的加载机制及内存分配使用原理:掌握类和对象的关系.对象和引用的关系:理解数组的本质,掌握数组的使用. (2)java高级编程 深入了解java的

Spring框架学习六:Spring对JDBC的支持

JdbcTemplate简介 为了使JDBC更加易于使用,Spring 在 JDBC API 上定义了一个抽象层,以此建立一个 JDBC 存取框架 作为 Spring JDBC 框架的核心,JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法.每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务.通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取工作量降到最低. #添加c3p0数据库连接池 jdbc.user=root jdbc.password=000 jdbc.jd

框架学习之路一

学习工作当中用到了那么多的框架,难免会想搞清楚这些框架的底层到底是怎样实现的,借此机会从简单的写起,尝试着去实现一个框架 一,通过解析xml,获取其中的字段,用反射技术调用类中的方法 技术:dom4j,java反射 1,定义一个接口 package com.epro.framework; public interface Ihello { public void sayHello();} 2,实现类 package com.epro.framework; public class HelloJa