Spring****——AOP、后置通知、注解形式的AOP、Schema形式的AOP

AOP的一些名词:

                     Spring****——AOP、后置通知、注解形式的AOP、Schema形式的AOP

面向对象编程:例如有3个文件,里面有一些属性、类、方法,其中有同样的方法XXX()和XX(),为了简化代码,将XXX()和XX()放到一个函数下面X()这时这3个文件如果想调用这两个方法时可以直接调用X()方法,但是这里有弊端,如果X()方法改名字的话,那么3个调用处也将要更改方法的名称,如果X()方法原本是在add()方法之后调用的,现在想在add()方法之前调用,那么这三个文件都要依次更改调用X()方法的位置,未免过于复杂;

面向切面编程(AOP):如上例子,可以写一个配置文件,,规定X()方法在add()方法之后调用,如果X()方法的位置发生变动,只需要更改配置声明文件即可,不用对具体代码进行更改;对于X()方法改名问题,可以规定在add()方法之后自动调用X()方法,而不必去管X的名称,因为此时X()方法是作为一个切入点放到具体的文件中去的;

xml方式的通知类型:

                      Spring****——AOP、后置通知、注解形式的AOP、Schema形式的AOP

后置通知:

通过接口将类变为通知;

  • 通知类(类 -> 通知类):普通实现接口;
  • 业务类:业类务方法,StudentServiecImp1中的addStudent();
  • 配置:首先将业务类、通知纳入springIOC容器;然后定义切入点(一端)、定义通知类(另一端),通过 pointcut-ref 将两端连接起来

基于注解形式的AOP实现:

通过注释将类变为通知;

  • jar:引入架包;
  • 配置:首先将业务类、通知纳入springIOC容器;然后开启注解对AOP的支持,

范例:编写通知并加入IOC容器

Spring****——AOP、后置通知、注解形式的AOP、Schema形式的AOP

范例:开启注解对AOP的支持

Spring****——AOP、后置通知、注解形式的AOP、Schema形式的AOP

利用注解方式的AOP时不要忘记开启扫描器,不然注解不会生效:

其中扫描器只对@Component、@Service、@Respository、@Controller修饰的类产生影响;

Spring****——AOP、后置通知、注解形式的AOP、Schema形式的AOP

基于Schema形式的AOP实现:

通过配置将类变为通知;

类似于实现接口的方式;首先编写一个普通类,然后通过配置将该类变成一个通知类;

范例:编写一个普通类

Spring****——AOP、后置通知、注解形式的AOP、Schema形式的AOP

范例:配置将其变为一个通知类

Spring****——AOP、后置通知、注解形式的AOP、Schema形式的AOP

Spring****——AOP、后置通知、注解形式的AOP、Schema形式的AOP