Spring核心概念(二)

IOC/DI

IOC(控制反转):对象(组件)的创建由代码中转移到外部容器(XML,注解) .

DI(依赖注入):当类A需要使用类B,那么我们需要为类A的属性赋值类B的对象.

  这种现象我们称为依赖注入.

注意:IOC/DI指的是同一个东西,理解的角度不一样.

补充:组件化思想:分离关注点,使用接口,不再关注实现.

AOP(面向切面编程)

AOP:是一种通过预编译和运行期动态代理的方式实现在

不修改源代码的情况下给程序动态添加功能的技术.

原理:

a.将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决.

b.采用代理机制组装起来运行,在不改变原程序的基础上对

    代码段进行增强处理,增加新的功能.

术语:

增强处理(Advice

前置增强

后置增强

环绕增强、异常抛出增强、最终增强等类型.

切入点(Pointcut

连接点(Join Point

切面(Aspect:切入点+增强处理.

目标对象(Target object

AOP代理(AOP proxy)

织入(Weaving

开发步骤:

第一步:写增强功能

第二步:配置核心文件

<!-- 注册增强类 -->

<bean id="tp" class="增强类">

<!-- 配置切面-->

<aop:config>

<!-- 配置切入点-->

<aop:pointcut id="名称" expression="

execution(匹配类和方法的表达式)

"/>

<!-- 配置切面-->

<aop:aspect ref="增强类的id">

<!-- 切面的增强方法和切入点 -->

<aop:before  method="增强方法" pointcut-ref="切入点的id" />

</aop:aspect>

</aop:config>

第三步:测试

匹配表达式

public * addUser(entity.User) //"*":任意返回值类型.

public void *(entity.User) //"*":任意方法名

public void addUser(..)     //"..":任意个任意类型的参数

* com.service.*.*(..) //com.service包下的所有直接子类的所有方法.

* com.service..*.*(..) //com.service包及其所有子包的所有类的所有方法.

原文地址:https://www.cnblogs.com/yang82/p/7954321.html