一、概念
1.1、面向对象编程1.2、面向方面编程1.3、AOL1.4、AOP理念
AOP解决的问题:织入面向切面编程 二、实例
一、概念 1.1、面向对象编程1.2、面向方面编程oop:面向对象编程。
(oop,Object-Oriented Programming)Oriented:面对
1.3、AOLaop:面向方面编程
(aop,Aspect-Oriented Programming)Aspect:方面
1.4、AOP理念 AOP解决的问题:实现AOP理念的语言称作AOL(Aspect-Oriented
Languange),AOL种类可以是java语言或AspectJ(扩展自Java)
如果需要在四个核心业务代码中,添加日志记录功能。
将添加日志记录的功能以面向对象的的方式实现并集成到整个系统中。系统中每个业务对象都需要加入日志记录。
我们就必须在四个核心业务代中都加入日志的内容,也许日志记录功能是完全相同的,但就是因为面向对象的设计让类与类之间无法联系(四个核心业务类无法联系),而不能将这些重复的日志记录代码统一起来。
public class Record {
public static void addRecord(){
System.out.println("添加日志");
}
}
public class A {
public void function(){
Record.addRecord();
}
}
public class B {
public void function(){
Record.addRecord();
}
}
织入
编程语言实现AOP理念,AOL实现AOP各个概念实体,最终都需要某种方式集成到系统实现语言所实现的OOP实体组件中。这个过程是织入(Weave)
把日志记录的方法代码写在一个独立的类中
在运行时,动态地将代码切入到类的指定方法、指定位置上。
@Repository
public class UserDao {
public void addUser(){
System.out.println("添加用户");
}
public void updateUser(){
System.out.println("修改用户");
}
public void deleteUser(){
System.out.println("删除用户");
}
}
@Aspect
public class MyAspectLog {
@After(value="execution(* cn.xh.dao.UserDao.addUser(..))")
public void log(){
System.out.println("记录日志");
}
}
在spring配置文件中加入:
切入点:addUser方法,即增强的方法。
连接点:可以应用通知进行增强的方法
我分不清切入点和连接点的区别。
织入:增强方法的过程。



