Spring IOC 和 AOP
一. IOC
1. 概念及原理
IOC: Inversion of Control(控制反转)是一种设计思想,就是容器控制应用程序所需要的外部资源的创建和管理,然后将其反转给应用程序.对象及其依赖对象的创建及维护都不需要在应用程序中实现,将其交给IOC容器去管理.传统的开发中,我们自己在对象内部创建依赖对象注入当前对象,完成依赖关系的维护;对于IOC而言,他强调是将主动变为被动,由IOC容器来负责依赖对象的创建和查找,由IOC容器来进行注入组合对象,我们只需要在相关的配置文件中维护对象的依赖关系即可.
DI: Dependency Injecton,即"依赖注入".其实IOC和DI本就是同一个概念的两种不同的表述,应用程序依赖容器提供的外部对象,容器将其依赖的外部资源在运行期注入到应用程序中;某个对象被调用时,其所依赖的对象由容器注入;
2. 优点
第一: 资源集中管理,实现资源的可配置和易管理,降低对象关系维护的复杂度.
第二: 降低了使用资源双方的依赖程度,也就是我们说的耦合度.
二. AOP
1. 概念
AOP面向切面,是一种编程思想,AOP将软件系统分为两个部分,核心业务和扩展业务,在不改变原有代码的基础上,给核心业务添加扩展功能,即OCP原则.
2. 实现方式
实现AOP的技术,主要分为两大类:
一 是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;
二 是采用静态织入的方式,引入特定的语法创建"方面",从而使得编译器可以再编译期间织入有关"方面"的代码.
3.优点
一. 横切关注点的代码都集中于一块,而不是分散在各个业务组件中,不会出现大量代码重复;
二. 核心模块只关注核心功能的代码,与通用模块分离,模块间耦合度降低.
Spring IOC 和 AOP的更多相关文章
- 【转】spring - ioc和aop
[转]spring - ioc和aop 1.程序中为什么会用到spring的ioc和aop 2.什么是IOC,AOP,以及使用它们的好处,即详细回答了第一个问题 3.原理 关于1: a:我们平常使用对 ...
- J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP
J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言 搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理. ...
- spring - ioc和aop
1.程序中为什么会用到spring的ioc和aop 2.什么是IOC,AOP,以及使用它们的好处,即详细回答了第一个问题 3.原理 关于1: a:我们平常使用对象的时候,一般都是直接使用关键字类new ...
- Spring IOC及AOP学习总结
一.Spring IOC体系学习总结: Spring中有两个容器体系,一类是BeanFactory.还有一类是ApplicationContext.BeanFactory提供了基础的容器功能.Appl ...
- Spring ioc与aop的理解
一 spring的特点 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易 ...
- spring IOC与AOP
Spring IOC容器 spring IOC 容器有两种,分别是 BeanFactory 容器和 ApplicationContext 容器. BeanFactory如下: /*第一步,利用Clas ...
- Spring IOC、AOP、Transaction、MVC小结
1.IOC.AOP:把对象交给Spring进行管理,通过面向切面编程来实现一些“模板式”的操作,使得程序员解放出来,可以更多的关注业务实现. - ...
- BeanPostProcessor —— 连接Spring IOC和AOP的桥梁
之前都是从大Boss的视角,来介绍Spring,比如IOC.AOP. 今天换个视角,从一个小喽啰出发,来加深对Spring的理解. 这个小喽啰就是, BeanPostProcessor (下面简称 B ...
- spring IOC 和AOP 方面
spring 的2大核心 是Ioc 和 aop spring的依赖注入:在程序运行期间,由外部容器动态的将依赖对象注入到组件中 IOC: 实例化spring容器的二种方法 第一种:在类路径下寻找配 ...
- 黑马-Spring(IOC&DI) AOP
IOC(控制翻转) 概念 把对象的创建.初始化.销毁等工作交给spring容器来做 案例 环境 步骤 1. 写一个HelloWorld类 2. 写一个配置文件 把hello类放到spring容 ...
随机推荐
- 802.11n 连接的建议设置是什么?
这些是用于支持 802.11N 的英特尔无线适配器的默认设置. 这些建议采用的设置可以在英特尔® PROSet/ 无线软件的 高级菜单上找到. 属性 值 频带 2.4 的 802.11n 通道宽度 自 ...
- 实例:使用puppeteer headless方式抓取JS网页
puppeteer google chrome团队出品的puppeteer 是依赖nodejs和chromium的自动化测试库,它的最大优点就是可以处理网页中的动态内容,如JavaScript,能够更 ...
- awesome vue
https://blog.csdn.net/caijunfen/article/details/78216868
- 【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)
在java.c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢. python提供了@classmethod和@staticmethod来定义 ...
- C 逗號表達式 與返回值
逗號表達式的返回值是最後一個表達式的值 int z; z=(,); printf("%d\n",z);//6 int a; printf(*,a*,a+));//20 a=3*5, ...
- Keras和tf关系【转载】
转自:https://blog.csdn.net/capecape/article/details/78390246 TensorFlow和theano以及Keras都是深度学习框架,TensorFl ...
- Python 命名笔记
类名开头大写,驼峰命名 函数名,变量名都小写, 全局常量 如COUNT, 使用全部大写 https://www.cnblogs.com/lytwajue/p/7324724.html 这个是全局变量关 ...
- mac-禅道环境
开机不能访问,换成IP地址就好了
- app刷新
https://segmentfault.com/a/1190000006733978 优化TCP socket参数,包括:是否关闭快速回收.初始RTO.初始拥塞窗口.socket缓存大小.Delay ...
- js贪心算法---背包问题
/* * @param {Object} capacity 背包容量 6 * @param {Object} weights 物品重量 [2,3,4] * @param {Object} values ...