文档章节

SpringFramework的几个核心模块

lee123lee
 lee123lee
发布于 2016/09/02 09:53
字数 1143
阅读 68
收藏 0

SpringFramework的结构图

从图中可以看出

Core Container

spring-core,spring-bean: spring框架最基本的部分,包括了控制反转和依赖注入.BeanFactory是工厂模式的一种精妙实现.她去除了对总的单例模式的需求,同时让你真正的程序逻辑减少了依赖的配置和规范.

spring-context:context模块构建在core和beans提供的基础之上,她是在一个框架风格的方法里获得对象的途径,就像一个JNDI(Java Naming and DirectoryInterface,Java命名和目录接口)注册一样.context模块从beans模块继承特性,另外提供国际化(比如使用资源绑定),事件传播,资源加载,或者通过一个Servlet容器创建显而易见的context等支持.context模块也支持EJB,JMX(Java Management Extensions,即Java管理扩展),基本的远程处理等JavaEE的特性.ApplicationContext是context模块的焦点.spring-context-support提供通过缓存(EhCache,Guava,JCache),邮件(JavaMail),调度(CommonJ,Quartz)和模版引擎(FreeMarker,JasperReports,Velocity)把第三方库集成到一个spring应用的上下文(context)中.

Spring-expression:她提供一个强大的表达式语言在运行时来查询和操作对象图.她是在JSP 2.1规范中指定的一种扩展的统一表达式语言(unified EL).这种语言支持对属性的获取与设置,属性的赋值,方法的调用,获取数组集合索引的内容,逻辑和算数操作,命名变量,以及从Spring的IoC容器通过名字获取对象.她也支持列表映射和选择,就像一般的列表聚合一样.

 

AOP and Instrumentation

    Spring-aop提供一个联盟标准的面向切面编程实现,她允许你定义诸如方法拦截器和切点干净利落地减少那些应该被分到一边的功能实现代码.使用源级的元数据功能,你也可以在你的代码里合并行为信息到一个方法里,就像.NET attributes.

    单独的spring-aspects模块被集成到了AspectJ里了.

    Spring-instrument模块提供了class instrumentation支持和类加载器的实现来在特定的应用服务器上使用.spring-instrument-tomcat模块包含了为tomcat提供的spring仪器(instrumentation)代理.

Messaging

    Spring-messaging模块是spring framework 4 包含的一个从spring集成项目(如Meaasge,MessageChannel,MessageHandler,和其他基于消息应用的基础服务)而来的关键抽象.这个模块也包括一系列的用来映射消息到方法的注解,类似于基于编程模型的springMVC注解.

Data Access/Integration

    数据的获取/整合 层包括了JDBC,ORM,OXM,JMS和事务模块.

    Spring-jdbc模块提供了一个JDBC抽象层来移除冗长乏味的JDBC编码和解析数据库供应商明确的错误代码.

    Spring-tx模块为实现了特殊借口的类和所以有你的POJOs(Plain Old Java Objects)提供了方案和声明式事务管理.

    Spring-orm模块为流行的对象关系映射APIs(包括JPA,JDO和Hibernate)提供集成层.通过使用spring-orm模块,你可以组合使用所有这些O/R mapping框架,同时使用spring提供的其他特性,比如之前提到的简单的声明式的事务管理特性.

    Spring-oxm模块提供一个支持Object/XML mapping实现(比如JAXB,XMLBeans,JiBX和XStream)的抽象层.

    Spring-jms模块包括生产和消费消息的特性,自从spring框架4.1,提供了和spring-messaging模块的集成.

Web

    Web层由spring-web,spring-webmvc,spring-websocket,和spring-webmvc-portlet模块构成.

    Spring-web模块提供面向web整合特性,比如多部件的文件上传功能和使用Servlet监听器初始化的IoC容器,和一个面向web的应用上下文.她也包括一个Http客户端和spring远程操作支持的面向web的部分.

    Spring-webmvc模块(也被称作Web-Servlet模块)包括为web应用而实现的Spring’s model-view-controller(MVC) 和REST Web Services .springmvc框架在model代码域和web表单以及其他所有spring框架的特性提供了一个清晰的界限.

    Spring-webmvc-portlet模块(也被称作Web-Portlet模块)提供一个被用在Portlet环境和镜像的spring-webmvc模块功能的MVC实现.

Test

    Spring-test模块支持在JUnit和TestNG下的sping组件的单元测试和集成测试.她提供了Spring ApplicationContexts 加载和缓存这些上下文.你可以独立的测试你的代码通过她提供的模拟对象.

 

© 著作权归作者所有

lee123lee
粉丝 51
博文 144
码字总数 122159
作品 1
闵行
高级程序员
私信 提问
带着问题学 Spring MVC 源码: 一、概述

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 简单就好,生活可以很德国 Q:什么是 Spring MVC ? ※ Spring MVC 是 Spring Web 的一个重要模块。Spring 支持...

泥沙砖瓦浆木匠
2016/10/23
72
0
springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建

springmvc学习笔记(6)-springmvc整合mybatis(IDEA中通过maven构建) 标签: springmvc mybatis [TOC] 本文主要展示如何在intellij IDEA中通过maven构建springmvc+mybatis框架的开发环境。 需求...

brianway
2016/03/10
432
0
SpringMVC Mybatis Shiro RestTemplate的实现客户端无状态验证及访问控制【转】

A.首先需要搭建SpringMVC+Shiro环境 a1.pom.xml配置 spring: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency><dependency> </d......

梵蒂冈考虑过
2016/10/07
57
1
利用Maven搭建Spring开发环境 【转】

一、 概要说明 最近几天在测试Spring3.0的AOP功能,在测试功能之前,首先是要搭建出Spring3.0的开发功能。开始去官网下载Spring的相关jar包,但是这些jar包中还是会需要其他的一些jar包,于是又...

梵蒂冈考虑过
2016/09/18
7
1
基于角色的权限控制在springMVC框架中的实现

前言:常规来说,我们在做权限的时候,基本就是这么几个要素:用户、角色、资源(权限点)。角色本质上是给资源分组,这样不同的group具有不同的权限来控制用户更方便一些。 一般情况下,web...

菜蚜
2018/01/11
472
2

没有更多内容

加载失败,请刷新页面

加载更多

性能优化

js相关 根据js时间线,将js放在最下面加载,先加载DOM,再加载js 懒执行,就是将某些逻辑延迟到使用时在执行。该技术可用于首屏优化,对于某些耗时逻辑并不需要在首屏就使用的,就可以使用懒...

祖达
5分钟前
0
0
websocket通信failed to execute 'send'问题的解决

在建立web socket通信后,发送数据时,出现下图所示现象: 问题代码演示 function TestSockets() { //实例化一个WebSocket对象 var socket = new WebSocket("ws://127.0.0.1:8000/w...

城市之雾
10分钟前
0
0
PHPStorm 如何设置 yaf 代码提示?

下载 php-yaf-doc git clone https://github.com/elad-yosifon/php-yaf-doc.git PHPStorm 如下设置 使用

whoru
12分钟前
0
0
typeorm drop foreign key

1. 问题描述 项目代码中使用typeorm进行mysql的数据操作, 昨天突然部署测试环境发现测试环境数据库的外键都为空了, 导致涉及的整个系统不可用. 2. 问题探究 尝试复现 mysqldump 线上数据, 然...

jimmywa
13分钟前
2
0
好程序员web前端开发测验之css部分

好程序员web前端开发测验之css部分Front End Web Development Quiz CSS 部分问题与解答 Q: CSS 属性是否区分大小写? <p><font size="3">  ul {</font></p> <p><font size="3">  MaRGin:......

好程序员IT
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部