作为目前java中使用率最多的框架,spring可以说是非常强大了,那你知道它的IOC和aop原理分别有哪些吗?跟小编一起来看看吧。
一、IOC核心容器
IoC(Inversion of Control)控制反转。它是spring的核心之一。所谓IoC,意思就是由spring来负责控制对象的生命周期和对象间的关系。它分为构造方法注入,set方法注入,接口注入,我们最常用的就是set方法注入。
举个简单例子:我们在用spring时用xml配置的方式的话,都会把bean配置在spring中,也有bean的property属性。spring容器在初始化时就通过反射将容器中的bean实例化,假如bean配置中有property属性,就会反射property属性注入到bean中,这就是控制反转。
IoC的一个重点就是运行在系统中,它能动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。
二、AOP面向切面编程
什么是AOP?
spring两个核心技术之一
1.DI依赖注入
DI主要解决了在类和类之间有依赖关系的时候,如何通过注入的方式(属性注入、构造器注入)形成松耦合。这就是依赖注入。
2.AOP面向切面编程
考虑如何把散落在应用中多处相同的功能剥离出来,使得这些剥离出来的逻辑与业务逻辑相分离的问题。这就是面向切面编程。
AOP实现之动态代理
1.代理模式的概念
为其他对象提供一种代理,以控制对这个对象的访问。换句通俗的话来说,它是一种使用代理对象来执行目标对象的方法,并在代理对象中增强目标对象方法的一种设计模式。
生活中:中介、微商
2.代理模式的好处
a>中介隔离
在调用方(`Caller`)不能或不想直接与目标对象(`Target`)打交道的时候,代理对象(`Proxy`)可以起到两者之间中介的作用。
生活中:买家直接跟中介联系,省心省事
b>开闭原则
我们可以通过给代理对象增加新的功能来扩展目标对象的功能,这样我们只需要修改代理类,而不需要修改目标类,符合代码设计的OCP原则(`Open Closed Principle`,对扩展是开放的,对修改是关闭的)。
生活中:业务类和dao层的关系
以上就是关于IOC和AOP一些原理的所有内容了,想了解更多java入门知识,快快关注我们的网站吧。
推荐阅读: