我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂。

主要用到的设计模式有工厂模式和代理模式。

IOC就是典型的工厂模式,通过sessionfactory去注入实例。

AOP就是典型的代理模式的体现。

代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。

spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分。

在传统的程序设计中,当调用者需要被调用者的协助时,通常由调用者来创建被调用者的实例。但在spring里创建被调用者的工作不再由调用者来完成,因此控制反转(IoC);创建被调用者实例的工作通常由spring容器来完成,然后注入调用者,因此也被称为依赖注入(DI), 依赖注入和控制反转是同一个概念 。

面向方面编程(AOP)是以另一个角度来考虑程序结构 ,通过分析程序结构的关注点来完善面向对象编程(OOP)。OOP将应用程序分解成各个层次的对象,而AOP将程序分解成多个切面。spring AOP 只实现了方法级别的连接点,在J2EE应用中,AOP拦截到方法级别的操作就已经足够。在spring中,未来使IoC方便地使用健壮、灵活的企业服务,需要利用spring AOP实现为IoC和企业服务之间建立联系。 
IOC:控制反转也叫依赖注入。利用了工厂模式 
将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter方法来注入,而不需要你在A里面new这些bean了。 
注意:面试的时候,如果有条件,画图,这样更加显得你懂了.

AOP:面向切面编程。(Aspect-Oriented Programming) 
AOP可以说是对OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。 
将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。

实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码.

简单点解释,比方说你想在你的biz层所有类中都加上一个打印‘你好’的功能,这时就可以用aop思想来做.你先写个类写个类方法,方法经实现打印‘你好’,然后Ioc这个类 ref=“biz.*”让每个类都注入即可实现。

摘自:http://blog.csdn.net/kingice1014/article/details/53160221

转载于:https://www.cnblogs.com/cyypndsx/p/7828700.html

Spring中IOC和AOP的详细解释相关推荐

  1. Spring中IOC和AOP的详细解释(转)

    原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...

  2. 谈谈自己对Spring中IOC和AOP的理解

    Spring框架的核心思想主要是IOC和AOP的思想 IOC IOC概念 Spring中的IOC AOP AOP概念 百度百科的解释 个人理解 AOP思想 IOC IOC概念 所谓IOC即 Inver ...

  3. spring中IoC和AOP的实现

    6.2 spring IoC IoC容器是Spring的核心.容器从配置文件中读取需要创建哪些对象,并在创建后按照要求把它们进行装配,通过这样的方法达到业务代码解耦的目的.不仅如此,spring还负责 ...

  4. 解释Spring中IOC, DI, AOP

    oc就是控制翻转或是依赖注入.通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象,而是通过spring的bean工厂为你长生这样一个对象. aop就是面向切面的编程.比如 ...

  5. Java 第一大框架:Spring 的 IoC 跟 AOP 雏形如何实现?

    Spring Spring make java more simple: Spring make java more modern: Spring make java more reactive: S ...

  6. Spring:IOC和AOP

    Spring:IOC和AOP 一. IOC (1) 引入 (2) 定义 (3) 作用 (4) 实现 (5) DI依赖注入 二. AOP (1) 概念 (2) Spring中的AOP (3) 入门案例 ...

  7. spring中ioc是什么

    摘自:https://www.jb51.net/article/123900.htm IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则.下面通过本文给大 ...

  8. linux 的ss命令,Linux中的ss命令的详细解释

    linxu下的ss其实Socket Statistics的缩写.下面由学习啦小编为大家整理了linux的ss命令的详细解释的相关知识,希望对大家有帮助! 一.Linux中的ssh命令的详细解释 1.命 ...

  9. linux中su命令源码,Linux中的su命令的详细解释

    linxu下的su命令的主要作用是变更为其他使用者的身份执行命令,面由学习啦小编为大家整理了linux的su命令的详细解释的相关知识,希望对大家有帮助! 一.Linux中的su命令的详细解释 建议大家 ...

最新文章

  1. c语言调用视频播放软件,C语言播放视频
  2. java 在线电影_java电影在线影评管理系统
  3. OD使用教程3(下) - 调试篇03|解密系列
  4. 集成ueditor后显示html问题处理
  5. 多级三目运算符的判断
  6. 利用jsoup 如何从网页中下载图片
  7. 封装一个帮助类来写文件到android外置存储器上
  8. Vue_(组件)计算属性
  9. 利用linux内核代码玩转c链表
  10. https无法识别证书(unable to find valid certification path to requested target)的另类解法
  11. 程序员桌面都这么秀?网友:用砖头当杯垫这样合适吗?留着吓谁
  12. 工控协议——S7通讯协议
  13. android 删除系统服务,不ROOT卸载系统自带应用
  14. 中介效应分析及R实现
  15. tempo 2.0 学习记录
  16. 前端学习-案例:制作一个超简单的静态页面
  17. 第三方支付牌照会改变在线支付现状吗?
  18. (九) 正则表达式——文本处理(用s///替换、split与join函数、列表上下文中的m//、非贪婪量词、文件更新等)
  19. 坚持并活下去!cxuan 在 CSDN 的 2020 年终总结。
  20. vba 添加outlook 签名_ExcelVBA调用Outlook对象

热门文章

  1. 可以设置压缩大小的在线GIF压缩
  2. backbone php,backbone与php交互
  3. Python知识笔记(+3):在定义字符串前面加b、u、r、f的含义
  4. SQL 时间范围和时间粒度
  5. Mysql中isnull,ifnull,nullif的区别
  6. 【新书推荐】【2017.12】Excel必学的技巧教程(部落窝教育)
  7. 2020年车工(中级)考试及车工(中级)考试试卷
  8. Sage X3 ERP如何帮助客户提高库存盘点准确率仓库为什么要多次盘点?
  9. 时间戳转换年,月,天,小时,分钟
  10. 头歌实践教学平台:Java入门 - Java初体验