请简要介绍Sping MVC、IoC和AOP
Sping MVC是在Spring框架上发展起来的框架,它提供了构建Web应用程序的全功能MVC模块,使用了Spring可插入的MVC架构,可以自由的选择各个模块所使用的架构,非常灵活。Spring MVC把控制器、模型、分派器以及处理程序对象的角色进行了分离,因此,Spring MVC具有更好的可定制性。
IoC,即控制反转,是一种降低对象之间耦合关系的设计思想。IoC将组件间的依赖关系从程序内部提到外部来管理(即IoC容器管理),通过使用IoC,对象不会被显示的调用,而是根据需求通过IoC容器来提供。IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象,这一点使用过依赖注入实现的。对于Spring框架而言,就是由Spring容器来控制对象的生命周期和对象间的依赖关系,所有对象的创建、销毁都是由Spring来控制,故控制对象生存周期的不再是依赖它的对象,而是Spring容器。对于某个具体对象而言,以前是它控制其他对象,现在则是所有对象由Spring容器控制。Spring容器会根据配置文件来创建调用者对象,同时把被调用者的对象的实例化对象通过构造函数或者set()方法的形式注入到调用者对象中。
IoC的优点:
① 通过IoC容器,开发人员不需要关注对象如何被创建的,同时增加新类也非常方便,只需要修改配置文件即可实现对象的“热插拔”
② IoC容器可以通过配置文件来确定需要注入的实例化对象,非常便于进行单元测试
IoC的缺点
① 创建对象的流程变得比较复杂
② 对象是通过反射机制实例化得到的,因此会对系统的性能有一定影响
AOP即面向切面编程是对面向对象编程的一种补充,其允许开发人员在不改变原来模型的基础上动态的修改模型以满足新的需求。AOP利用一种称为“横切”的技术,能够解剖开封装的对象内部,并将那些影响了多个类并且与具体业务无关的公共行为封装成一个独立的模块,称为切面。AOP在Java中是通过反射机制实现的。AOP可以实现扩展功能的同时不修改原代码,将功能代码从逻辑代码中分离出来。
利用AOP实现的功能主要有日志记录、性能统计、安全控制、事务处理、异常处理等。
使用AOP的主要意图是将日志记录、性能统计、安全控制、事务处理、异常处理等代码从业务逻辑代码中分离出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,当改变这些行为的时候不会影响业务逻辑的代码。
AOP的特点是利用横向抽提机制,取代传统的纵向继承体系重复性代码。
请简要介绍Sping MVC、IoC和AOP的更多相关文章
- 【Java】模拟Sping,实现其IOC和AOP核心(一)
在这里我要实现的是Spring的IOC和AOP的核心,而且有关IOC的实现,注解+XML能混合使用! 参考资料: IOC:控制反转(Inversion of Control,缩写为IoC),是面向对象 ...
- Spring框架IOC和AOP介绍
说明:本文部分内容参考其他优秀博客后结合自己实战例子改编如下 Spring框架是个轻量级的Java EE框架.所谓轻量级,是指不依赖于容器就能运行的.Struts.Hibernate也是轻量级的. 轻 ...
- Spring IOC、AOP、Transaction、MVC小结
1.IOC.AOP:把对象交给Spring进行管理,通过面向切面编程来实现一些“模板式”的操作,使得程序员解放出来,可以更多的关注业务实现. - ...
- 【Java】模拟Sping,实现其IOC和AOP核心(二)
接着上一篇,在上一篇完成了有关IOC的注解实现,这一篇用XML的方式实现IOC,并且完成AOP. 简易的IOC框图 注解的方式实现了左边的分支,那么就剩下右边的XML分支: XmlContext:这个 ...
- java简单例子介绍IOC和AOP
IOC和AOP的一些基本概念 介绍 IOC 一.什么是IOC IoC就是Inversion of Control,控制反转.在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内 ...
- 封装:简要介绍自定义开发基于WPF的MVC框架
原文:封装:简要介绍自定义开发基于WPF的MVC框架 一.目的:在使用Asp.net Core时,深感MVC框架作为页面跳转数据处理的方便,但WPF中似乎没有现成的MVC框架,由此自定义开发一套MVC ...
- Spring MVC工作原理及源码解析(一) MVC原理介绍、与IOC容器整合原理
MVC原理介绍 Spring MVC原理图 上图是Spring MVC工作原理图(图片来自网上搜索),根据上图,我们可以得知Spring MVC的工作流程如下: 1.用户(客户端,即浏览器)发送请求至 ...
- 简要介绍 My.Ioc 的用法
下面这段代码展示了 My.Ioc 的基本用法: using System; using System.Collections.Generic; namespace My.Ioc.Sample { pu ...
- Sping MVC不使用任何注解处理(jQuery)Ajax请求(基于XML配置)
1. Spring Spring框架是一个轻量级的解决方案,是一个潜在的一站式商店,用于构建企业就绪的应用程序.Spring框架是一个Java平台,为开发Java应用程序提供全面的基础架构支持.Spr ...
随机推荐
- JavaScript数组方法大全(推荐)
原网址:http://www.jb51.net/article/87930.htm 数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习, ...
- VBox添加虚拟磁盘挂载
1. 关闭虚拟机,然后在设置里面选择添加虚拟硬盘 2.lsblk检查存在10G sdb虚拟磁盘 fdisk -l 检查 /dev/sdb 尚没有分区 3.磁盘分区 4.检查分区状况lsblk 5.格式 ...
- STO单没有取进FP,IN_SAELS_ORDER表无,但IN_PO_STO有
描述 :业务反馈STO单没有取进FP,经检查IN_SALES_ORDER表没有此单数据,但在IN_PO_STO表却有 跟进如下: 1.检查IN_PO_STO表是否有数据 '; 2.检查SAP_SALE ...
- oracle 一致读原理
在Oracle数据库中,undo主要有三大作用:提供一致性读(Consistent Read).回滚事务(Rollback Transaction)以及实例恢复(Instance Recovery). ...
- 一些网站的meta标签的作用
转载:https://www.cnblogs.com/Lily-nercel/p/6693293.html <!DOCTYPE html> <html lang="en&q ...
- 侯捷STL课程及源码剖析学习3: 深度探索容器list
一.容器概览 上图为 GI STL 2.9的各种容器.图中以内缩方式来表达基层与衍生层的关系.所谓的衍生,并非继承(inheritance)关系,而是内含(containment)关系.例如 heap ...
- typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
首先介绍大家比较熟悉的typedef int i;//定义一个整型变量i typedef myInt int: myInt j;//定义一个整型变量j 上面介绍得是我们常用的比较简单的typedef的 ...
- c#的Boolean.Parse用法
bool val; string input; input = bool.TrueString; val = bool.Parse(input); Console.WriteLine("'{ ...
- SQLite4Unity3d
What's this? When I started with Unity3d development I needed to use SQLite in my project and it was ...
- Codeforces Beta Round #27 (Codeforces format, Div. 2)
Codeforces Beta Round #27 (Codeforces format, Div. 2) http://codeforces.com/contest/27 A #include< ...