Spring MVC Web框架
Spring MVC是java EE平台请求驱动类型的轻量级Web框架,使用了MVC设计模式的思想,spring框架的主要优势之一就是分层架构,分层架构允许选择使用任何一个组件,同时也可以集成其它框架技术,例如:Struts2、Hibernate等
Spring框架具有以下特点:
1. 方便解耦,简化开发。通过spring3提供的IoC容器,可以将对象之间的依赖关系交由Spring3控制,避免编码所造成的程序过度耦合
2. AOP编程的支持。通过Spring3提供的AOP功能,方便进行面向切面编程,许多不容易使用面向对象程序设计(OOP)实现的功能可以通过AOP轻松实现
3. 声明式事务的支持。通过声明方式灵活地进行事务管理,提高开发效率和质量
4. 方便集成各种优秀框架。
Spring框架各个组件的功能:
1. 核心容器
核心容器提供Spring3框架基本的功能。核心容器的主要组件是BeanFactory和ApplicationContext。容器使用控制反转(IoC)模式将应用程序的配置和依赖性规范和实际的应用程序代码分开。
2. Spring上下文
Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如,校验、JNDI、EJB、电子邮件、国际化等
3. Spring AOP
通过配置管理特性,Spring AOP模块直接将面向切面的编程功能集成到Spring框架中,pring AOP模块提供了事务管理服务。
4. Spring DAO
JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。
5. Spring ORM
Spring插入了若干个ORM框架,从而提供了ORM的工具,其中包括JDO、Hibernate、iBatisSQL Map。
2. Spring IoC(控制反转)
IoC是Inversion of Control的缩写,就是通过IoC容器来实现对象组件的装配和管理。也就是说,所有组件都是被动的,所有的组件初始化和调用都由IoC容器负责。
Spring IoC经常用到一个设计模式——工厂模式,工厂模式提供创建对象的接口。
Spring框架两个最基本的包是:org.springframework.beans.factory(主要接口是BeanFactory)和org.springframework.context(主要接口是ApplicationFactory)
IoC主要组件:
1. Beans
Beans指项目中提供业务功能Bean,即IoC容器要管理的Bean,Bean可以包含一些属性的getter和setter方法,也可以包含其他方法
2. 配置文件
Spring对Bean的管理在配置文件中进行.Bean的配置文件是一个xml文件,他通常命名为beans.xml、applicationContext.xml等,配置文件包含Bean的id、类、属性及其值。IoC容器通过Bean的id从Bean配置文件中取得Bean的类,并生成该配置文件的一个对象。
3. BeanFactory接口及其相关类
BeanFactory采用了工厂设计模式,即Bean容器模式,负责读取Bean的配置文件,管理对象的生成、加载,维护对象之间的依赖关系,负责Bean对象的生命周期。
org.springframework.beans.factory.BeanFactory是一个顶级接口,它包含管理Bean的各种方法,例如:getBean(String name),,根据Bean的id生成Bean的对象
4. ApplicationContext接口及其相关类
ApplicationContext接口提供高级功能的容器,例如:提供访问资源文件的更方便的方法,支持国际化等
注入的两种方式:
1. 设置注入
设置注入是通过setter方法注入被调用者的实例
2.构造注入
利用构造方法来设置依赖注入
3. Spring AOP(面向切面编程)
AOP为Aspect Oriented Programming的缩写,即面向切面编程(也叫面向方面),是一种可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可。
AOP分为静态AOP和动态AOP。静态AOP是指AspectJ实现的AOP,他是将切面代码直接编译到Java类文件中。动态AOP是指将切面代码进行动态织入实现的AOP。Spring的AOP为动态AOP,实现的技术为:JDK提供的动态代理技术 和 CGLIB(动态字节码增强技术)。尽管实现技术不一样,但都是基于代理模式,都是生成一个代理对象
Spring MVC Web框架的更多相关文章
- Spring MVC + jpa框架搭建,及全面分析
一,hibernate与jpa的关系 首先明确一点jpa是什么?以前我就搞不清楚jpa和hibernate的关系. 1,JPA(Java Persistence API)是Sun官方提出的Java持久 ...
- 使用Maven创建一个Spring MVC Web 项目
使用Maven创建java web 项目(Spring MVC)用到如下工具: 1.Maven 3.2 2.IntelliJ IDEA 13 3.JDK 1.7 4.Spring 4.1.1 rele ...
- hibernate+spring+mvc+Easyui框架模式下使用grid++report的总结
最近刚开始接触hibernate+spring+mvc+Easyui框架,也是刚开通了博客,希望能记录一下自己实践出来的东西,让其他人少走弯路. 转让正题,以个人浅薄的认识hibernate对于开发人 ...
- Spring MVC 学习总结(十)——Spring+Spring MVC+MyBatis框架集成(IntelliJ IDEA SSM集成)
与SSH(Struts/Spring/Hibernate/)一样,Spring+SpringMVC+MyBatis也有一个简称SSM,Spring实现业务对象管理,Spring MVC负责请求的转发和 ...
- Spring MVC测试框架
原文链接:http://jinnianshilongnian.iteye.com/blog/2004660 Spring MVC测试框架详解——服务端测试 博客分类: springmvc杂谈 spri ...
- Spring MVC测试框架详解——服务端测试
随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...
- [读后感]spring Mvc 教程框架实例以及系统演示下载
[读后感]spring Mvc 教程框架实例以及系统演示下载 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&qu ...
- 转载:如何让spring mvc web应用启动时就执行
转载:如何让spring mvc web应用启动时就执行特定处理 http://www.cnblogs.com/yjmyzz/p/4747251.html# Spring-MVC的应用中 一.Appl ...
- 新建 Spring Mvc Web + Maven 的 maven 错误 (二)
新建项目后,可能由于哪边配置不正确,或也可能是编码问题,就有可能在创建初始就可能发生错误: 这是 pom.xml 中提示的错误,有的人说要删除 maven 的本地仓库位置:c:\用户[Users]\A ...
随机推荐
- Perl 随笔
1. .pl 文件带入参数: ./auto_cfg.pl ./mconfig.config ./boardconfig.config ./menuconfig.config .ver ./a ...
- iOS沙盒机制介绍,Block 的介绍
一.iOS沙盒机制介绍 (转载) 1)概念:每个ios应用都有自己的应用沙盒,应用沙盒就是文件系统目录,与其他应用放入文件 系统隔离,ios系统不允许访问 其他应用的应用沙盒,但在ios8中已经开放访 ...
- SpringMVC 中获取所有的路由配置。
ApplicationContext context = TMSContextLookup.getApplicationContext(); String[] controllerList = con ...
- 山东ACM省赛历届入口
山东省第一届ACM大学生程序设计竞赛 山东省第二届ACM大学生程序设计竞赛 山东省第三届ACM大学生程序设计竞赛 山东省第四届ACM大学生程序设计竞赛 山东省第五届ACM大学生程序设计竞赛 山东省第六 ...
- GTD一些问题
一."大局"与事物的本质1,在处理每天.每小时的事务时,有很多干扰因素分散了我们的注意力,以致我们无法集中足够的精力关注更重要的问题.2,一种下意识的抵触情绪,在面对那些原本棘手的 ...
- 升级正版win10及保持yosemite双操
因为有同事升级了正版的win10,心头长草了,本来x230的win7就是正版,现在win10可以免费升级,为何不做? 为此跑了2趟lenovo的维修站,诸多限制,最终决定自己搞定.据说,需要恢复到原厂 ...
- php代码运行提速的20个小技巧(转)
用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中 ...
- 翻译: TypeScript 1.8 Beta 发布
原文地址:https://blogs.msdn.microsoft.com/typescript/2016/01/28/announcing-typescript-1-8-beta/ 今天,我们发布了 ...
- USB编程研究之二(常见设备类型的GUID)
在USB编程之前要事先了解一下GUID的概念. 应用其他网页中的定义: 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多流行软件应用程序(例如 Web 浏览器和媒体 ...
- 移动设备页面高度不足时min-height 的尴尬处理
移动设备页面高度不足时min-height 的尴尬处理 在做html5的页面时,经常遇到页面内容太少撑不起来整个手机屏幕的高度. 我们经常使用min-height来处理,比如min-height:56 ...