Spring的AOP和IoC/DI

一、Ioc、DI

控制反转、依赖注入

在A类中调用B类的方法,那么我们就称 A依赖B,B为被依赖(对象)

传统做法:

(1)直接在A(方法)中new出B类对象,然后调用B类方法 —— 硬编码耦合;

(2)通过简单工厂获取B类对象,然后调用B类的方法 —— 摆脱了与B的耦合,却又与工厂产生了耦合;

以上两种做法,都是在A中主动去new或调用简单工厂的方法产生B的对象,注意,关键字是“主动”

Spring框架

在spring中,B的实例对象被看成Bean对象,这个Bean对象由spring容器进行创建和管理,当我们在配置文件中配置<Bean>下的<property>子元素时,spring就会自动执行在A中对B对象的setter方法(即A中需要有对B对象的setter方法),

如此一来,A获取B的实例对象就不是由自己主动去获取,而是被动接受spring给它设值,那么,这个主动变为被动,就可以理解为“控制反转”。

而另一种说法,从spring容器的角度上看,它负责把A的依赖对象B(B是被依赖对象)注入给了A,所以我们可以理解为“依赖注入”;

<bean id="userAction" class="com.router.action.UserAction" scope="prototype">
        <!-- 注入Service -->
        <property name="userService" ref="userService" />
</bean>

当然也可以用@Autowired注入。

二、AOP

AOP —— Asepct-Orentid-Programming,面向切面编程

Aop 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

AOP的核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用服务进行分离。”

@Before,@After

猜你喜欢

转载自www.cnblogs.com/Samuel1/p/9916798.html