AOP(??):面向切面编程(将业务和非业务公共功能分开,将业务功能实现中的一些非业务代码抽取出来,用一个切面(类)进行保存,切面中设置为通知(方法),然后通过切入点表达式作用到连接点)
OOP:面向对象编程,Java的核心原理(纵向继承)
两者是相互补充的关系
横切关注点:抽取出来的公共功能或者非业务代码
切面:存放横切关注点的类
通知:横切关注点放在切面中后的方法
连接点:切面作用于目标对象的位置:前,后,返回,异常,(环绕,前四种的组合)。
切入点:切面作用于连接点的条件,其实就是切入点表达式。
如何写AOP:
1)AspectJ(??): Spring AOP是一种思想,而AspectJ是一种直接体现。AspectJ使用的是注解的方式。
①首先在Spring的配置文件中配置扫描组件,当前项目中所有需要Spring管理的对象都需要扫描,
②添加<aop:aspectj-autoproxy>自动代理。
③创建一个类,需要加两个注解,@Component,当作一个组件被Spring管理; @Aspect,表示为一个切面。
④写方法,如何把相应的方法设置为相应的通知?对应的注解:@Before,@After (一定会执行), @AfterRunning (返回,正常执行完成后,如果出现异常则不一定可以执行,可以设置参数操作返回值),@AfterThrowing(出现异常时,可以设置参数操作抛出异常),@Around。
⑤@order(值越小,优先级越高)
2)XML配置(??)(Spring专有)
通过<aop:config><aop:aspect>:表示一个切面;<aop:pointcut>:表示一个切入点;<aop:after>...每种通知类型都对应一个特定的XML元素,通知元素需要使用<pointcut-ref>来引用切入点,或用<pointcut>直接嵌入切入点表达式。
JdbcTemplate(??)
原文:https://www.cnblogs.com/lemonzhang/p/12922293.html