ioc,di,aop详解
理解的话我们需要脱离Spring去看面相对象设计原则。
依赖倒置(DIP)原则是面向对象设计的主要实现机制之一。
它要求我们依赖接口编程,而不是依赖实现编程。尽量引用层次高的抽象层类,即使用接口和抽象类的形式进行变量类的声明、参数返回类型声明,以及数据类型的转换等。
但当我们在依赖抽象层编程时,需要将抽象类设置具体实例化以后的对象引用。
故引入控制反转(IoC)设计原则。控制反转是为了将具体对象的创建过程交由一个统一容器进行管理,降低代码耦合度,其关键在于容器(如Spring)。
而控制反转(IoC)的实现方法主要有两种:依赖注入(DI)和依赖查找(DL)。
依赖注入(DI)又存在常见四种方式:构造注入(构造函数)、设值注入(setter)、接口注入(对外提供传递具体实现的方法,但参数类型为抽象类型)、注解注入(外部容器扫描注解,关联引用,如:@Autowired)
依赖查找更加主动,在需要的时候通过调用框架提供的方法来获取对象,获取时需要提供相关的配置文件路径、key等信息来确定获取对象的状态。(如:Spring的ApplicationContext)
最后AOP的主要目的在于扩展、修改原有代码行为而不修改代码本身,而是通过“切入点”规范指定哪些代码需要修改。
实现AOP的技术,主要分为两大类:一是采用动态代理技术,运行期间在内存中动态生成代理类,如Java本身的Proxy动态代理,以及CGLIB等(Spring Aop使用此类方式);二是采用静态织入的方式,在运行前(如编译期间)织入代码(如AspectJ存在编译前、编译后、加载时三种织入方式)。
有帮到你的点赞、收藏一下吧
需要更多教程,微信扫码即可
ioc,di,aop详解相关推荐
- Spring4 AOP详解
Spring4 AOP详解 第一章Spring 快速入门并没有对Spring4 的 AOP 做太多的描述,是因为AOP切面编程概念不好理解.所以这章主要从三个方面详解AOP:AOP简介(了解),基于注 ...
- Spring AOP详解(转载)所需要的包
上一篇文章中,<Spring Aop详解(转载)>里的代码都可以运行,只是包比较多,中间缺少了几个相应的包,根据报错,几经百度搜索,终于补全了所有包. 截图如下: 在主测试类里面,有人怀疑 ...
- Spring AOP详解(http://sishuok.com/forum/posts/list/281.html)
三6.5 AspectJ切入点语法详解 6.5.1 Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接 ...
- Spring+IOC(DI)+AOP概念及优缺点
Spring pring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应 ...
- Java依赖注入(DI)实例详解
Java依赖注入模式允许我们摆脱硬编码,使我们的应用更加松耦合.增强扩展性以及可维护性.通过依赖注入我们可以降低从编译到运行时的依赖性. Java依赖注入 Java的依赖注入仅仅通过理论是很难解明白的 ...
- spring IOC DI AOP
IOC bean工厂 getbean(String):Object 三种方式 核心是一个map单例 双重加锁校验 DI 构造参数 *实例工厂方法和静态工厂方法 原型bean缓存多次利用 循环依赖问题 ...
- Spring源码分析之BOP/IOC/DI/AOP
Spring是什么? 轻量级:零配置编程.API使用简单 面向Bean:只需要编写普通的对象 轻耦合:充分利用AOP(面向切面)的思想 设计模式:使用java中经典的设计模式 面向Bean-BOP:通 ...
- Spring3.0 AOP 详解
一.什么是 AOP. AOP(Aspect Orient Programming),也就是面向切面编程.可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度 ...
- Spring学习(八)AOP详解
本文借鉴:Spring学习 一.一个例子 在上面的例子中,包租婆的核心业务就是签合同,收房租,那么这就够了,灰色框起来的部分都是重复且边缘的事,交给中介商就好了,这就是 AOP 的一个思想:让关注点代 ...
最新文章
- QEMU,一个快速的和便捷的动态翻译器(论文译文)
- 数据结构C#版笔记--树与二叉树
- 计算机系统的可靠性可以用什么来表示,系统分析师考试计算机系统的可靠性指标...
- Bzoj 3289: Mato的文件管理 莫队,树状数组,逆序对,离散化,分块
- HTML作业-保护环境-保护地球
- c#开发Mongo笔记第五篇
- Jetty 和tomcat 比较研究初探
- Java继承的基本概念及其限制(基础语法二)
- 如何去掉CAD教育版打印戳记
- CS188-Project 4
- linux超级块编辑,在EXT4 linux系统上模拟丢失的超级块错误
- 酸辣土豆丝的做法你知道几个?
- bat获取管理员权限运行
- Endnote 导出中英文参考文献到Word
- 好未来谢华亮:AI 在教育行业中的应用
- 解决浏览器被毒霸篡改问题
- html5一键打包成苹果软件,GDB苹果网页一键打包工具如何使用?GDB苹果网页一键打包工具安装使用教程...
- idea快速搭建ssm框架
- Problem A: 算法4-5:求子串位置的定位函数
- 信息系统项目管理师 - 信息系统项目管理基础