请简要介绍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 ...
随机推荐
- HDU 6351 Naive Operations(线段树)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=6315 Naive Operations Time Limit: 6000/3000 MS (Java/O ...
- 找回密码的url分析
https://www.example.com/reset?email=user@example.com&key=b4c9a289323b21a01c3e940f150eb9b8c542587 ...
- 贪吃蛇Global Java实现(二)
package cn.tcc.snake.util; public class Global {public static final int CELL_SIZE=20;public static f ...
- angular小技巧随笔
1. 重新刷新页面 同页面切换状态: $state.go('tab.index', {inviteId:inviteId}); self.location.reload();
- 【校招面试 之 C/C++】第32题 C++ 11新特性(三)之for关键字
1.for循环的一般写法: int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < 10; i++) cout ...
- Django配置后台xadmin管理界面
Django配置后台xadmin管理界面 python版本3.6.5 Django版本1.10.8(刚开始是2.1.5,由于各种错误,改成了低版本) 1.xadmin的安装,下载地址https://g ...
- 数据节点-df 无法输出结果
1. 删除了 a 机器的/opt/data 目录 2.b与c 机器挂载了 a机器的/opt/data 3.df -h 无法输出结果 最后参考:http://blog.csdn.net/lufeisan ...
- InertialNav
https://github.com/priseborough/InertialNav Instructions To Run Simulink Model Note : Simulink model ...
- WebApi的过滤器
代码: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System ...
- Lucene/Solr企业级搜索学习资源
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http GSol ...