Spring学习笔记——AOP

1.1 Spring实现AOP的原理

动态代理:被代理对象必须实现接口,才能产生代理对象,如果没有接口将不能实现动态代理技术
cglib代理:第三方代理技术,可以对任何类生产代理对象,代理的原理是对目标对象进行继承代理,如果目标被final修饰那么该类无法被cglib代理。

1.2 Spring的AOP中的术语

joinpoint(连接点):业务的核心方法,目标对象中所有可以增强的方法。
pointcut(切入点):被加入了增强代码的连接点。切入点一定是连接点,连接点不一定是切入点。
advice(通知/增强):增强的代码,比如打开事务、提交事务、日志代码。
target(目标对象):被代理的对象。
weaving(织入):将通知织入到切入点的过程。
proxy(代理):将通知织入到切入点后形成的代理对象
aspect(切面):切入点 加通知

1.3 Spring的AOP演示

1、新建通知的对象
public class MyAdvice {
	//前置通知:目标方法运行之前调用
	public void before(){
		System.out.println("这是前置通知!!");
	}
	//后置通知:目标方法运行之后调用,如果揣想那异常不会调用
	public void afterReturning(){
		System.out.println("这是后置通知(如果出现异常不会调用)!!");
	}
	//环绕通知:在目标方法之前或之后调用
	public Object around(ProceedingJoinPoint pjp) throws Throwable {
		System.out.println("这是环绕通知之前的部分!!");
		Object proceed = pjp.proceed();//调用目标方法
		System.out.println("这是环绕通知之后的部分!!");
		return proceed;
	}
	//异常通知:如果出现异常就不会调用
	public void afterException(){
		System.out.println("出事啦!出现异常了!!");
	}
	//后置通知:无论是否异常都会被调用
	public void after(){
		System.out.println("这是后置通知(出现异常也会调用)!!");
	}
}
2、新建目标对象

public class UserServiceImpl implements IUserService {

	public void save() {
		System.out.println("保存用户");
		
	}

	public void deleted() {
		System.out.println("删除用户");
		
	}

	public void update() {
		System.out.println("更新用户");
		
	}

	public void find() {
		System.out.println("查找用户");
		
	}

3、配置通知



						   
			
				
		
		
		  
		  
		  
		        
				
				
				
				
				
				
				
				
				
		  
			  



你可能感兴趣的:(spring)