Spring IOC,AOP原理(重点)
IOC:控制反转
假设有这么一个场景:在A类中调用B类的方法,我们就称A依赖B,B为被依赖(对象)
传统做法:直接在A(方法)中new出B类对象,然后调用B类方法
Spring框架:在spring中,B的实例对象被看成Bean对象,这个Bean对象由spring容器进行创建和管理,这样,A获取B的实例对象就不是由自己主动去获取,而是被动接受spring给它设值,这样由主动变为被动,就可以理解为“控制反转”。
AOP:从左到右的关系 例子:people去医院,把医院这个第三方机构独立出来
传统的OOP,是一种从上到下的关系。以people对象来说,people对象有身高、体重、年龄等属性,也有跑步、吃饭、睡觉、娱乐等行为,把这些属性和行为封装在people类中,然后以统一调用的方式叫做OOP思想。
AOP思想就是一种从左到右的关系,以切入的方式将业务逻辑功能应用到每一层结构中(可以理解为类方法,类方法也是一种对象的行为实现)。举个例子,people也可以分为少年、青年、中年、和老年,这几类人除了拥有自己的属性和行为外,生活中,或许还需要去医院看病,但是医院看病这一个业务逻辑功能并不是属于哪一类,而是谁生病了,才需要到医院看病,而基于面向对象编程的思想,我们是不可能把这一个业务逻辑行为加到每一个类中的,这不符合OOP思想,而这个就是AOP所做也可以做到事情了,AOP就是把医院看病这一个业务逻辑功能抽取出来,然后动态把这个功能注入到需要的方法(或行为)中,以后不管是谁需要看病,就到医院这个第三方机构看病(AOP就是相当于把这个第三方机构独立出来),这样从业务逻辑角度上,AOP达到了更近一步的的解耦,所以我们也称AOP是对OOP的完善和增强。在编程中,常用到AOP的就是安全校验、日志操作、事务操作等
本人才疏学浅,如有错误,烦请指出,谢谢!