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的更多相关文章

  1. 【Java】模拟Sping,实现其IOC和AOP核心(一)

    在这里我要实现的是Spring的IOC和AOP的核心,而且有关IOC的实现,注解+XML能混合使用! 参考资料: IOC:控制反转(Inversion of Control,缩写为IoC),是面向对象 ...

  2. Spring框架IOC和AOP介绍

    说明:本文部分内容参考其他优秀博客后结合自己实战例子改编如下 Spring框架是个轻量级的Java EE框架.所谓轻量级,是指不依赖于容器就能运行的.Struts.Hibernate也是轻量级的. 轻 ...

  3. Spring IOC、AOP、Transaction、MVC小结

    1.IOC.AOP:把对象交给Spring进行管理,通过面向切面编程来实现一些“模板式”的操作,使得程序员解放出来,可以更多的关注业务实现.                             - ...

  4. 【Java】模拟Sping,实现其IOC和AOP核心(二)

    接着上一篇,在上一篇完成了有关IOC的注解实现,这一篇用XML的方式实现IOC,并且完成AOP. 简易的IOC框图 注解的方式实现了左边的分支,那么就剩下右边的XML分支: XmlContext:这个 ...

  5. java简单例子介绍IOC和AOP

    IOC和AOP的一些基本概念 介绍 IOC 一.什么是IOC IoC就是Inversion of Control,控制反转.在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内 ...

  6. 封装:简要介绍自定义开发基于WPF的MVC框架

    原文:封装:简要介绍自定义开发基于WPF的MVC框架 一.目的:在使用Asp.net Core时,深感MVC框架作为页面跳转数据处理的方便,但WPF中似乎没有现成的MVC框架,由此自定义开发一套MVC ...

  7. Spring MVC工作原理及源码解析(一) MVC原理介绍、与IOC容器整合原理

    MVC原理介绍 Spring MVC原理图 上图是Spring MVC工作原理图(图片来自网上搜索),根据上图,我们可以得知Spring MVC的工作流程如下: 1.用户(客户端,即浏览器)发送请求至 ...

  8. 简要介绍 My.Ioc 的用法

    下面这段代码展示了 My.Ioc 的基本用法: using System; using System.Collections.Generic; namespace My.Ioc.Sample { pu ...

  9. Sping MVC不使用任何注解处理(jQuery)Ajax请求(基于XML配置)

    1. Spring Spring框架是一个轻量级的解决方案,是一个潜在的一站式商店,用于构建企业就绪的应用程序.Spring框架是一个Java平台,为开发Java应用程序提供全面的基础架构支持.Spr ...

随机推荐

  1. sass 使用clac的问题

    最后在github的issue中找到了方法,要想在sass的calc中使用变量,必须对这个变量使用sass的插值方法(#{$variable}). 所以把代码改正下面的形式就可以了: width: c ...

  2. python-ceilometerclient命令行(2)

    命令行解析工具argparse argparse是python标准库中的模块,利用argparse,可以完成对命令行的参数定义.解析以及后续的处理.一个简单的例子: # coding:utf-8 im ...

  3. 大数据入门到精通3-SPARK RDD filter 以及 filter 函数

    一.如何处理RDD的filter 1. 把第一行的行头去掉 scala> val collegesRdd= sc.textFile("/user/hdfs/CollegeNavigat ...

  4. Python 多继承与MRO-C3算法

    继承关系图:树结构 广度优先遍历:先找A,再找B.C,最后找D.E.(顺序:A.B.C) 深度优先遍历:先找A,再找B,接着找D.E(把B里面找完):然后找C.(顺序:A.B.D.E.C) MRO-C ...

  5. django admin后台设置

    #encoding:utf-8 from django.contrib import admin from son10.models import * # Register your models h ...

  6. hibernate ORA-17059 无法转换为内部表示

    参考 https://jingyan.baidu.com/article/2fb0ba40a25a2b00f2ec5fc7.html 数据库里的字段类型与Java实体类中的对应字段属性类型不匹配

  7. 两条线段求交点+叉积求面积 poj 1408

    题目链接:https://vjudge.net/problem/POJ-1408 题目是叫我们求出所有四边形里最大的那个的面积. 思路:因为这里只给了我们正方形四条边上的点,所以我们要先计算横竖线段两 ...

  8. Python+Selenium学习--定位一组对象

    场景 从上一节的例子中可以看出,webdriver可以很方便的使用find_element方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要使用find_elements方法. ...

  9. Could not get lock /var/lib/dpkg/lock更新问题

    发生于apt-get update或apt update时. 常见手段,先试试: sudo rm /var/lib/dpkg/lock sudo rm /var/lib/apt/lists/lock ...

  10. bbs项目富文本编辑器实现上传文件到media目录

    media目录是在project的settings中设置的,static目录是django自己使用的静态文件的上传目录,media目录是用户自定义上传文件的目录 # Django用户上传的文件都放在m ...