关于SpringAOP的一些事

AOP(Aspect Orient Programming) 也就是面向切面的编程,是从动态角度考虑程序运行过程。包括前置通知和后置通知。

作用:通常使用AOP来处理一些具有横切性质的系统性服务,比如事物管理,安全检查,缓存,对象池的管理。

spring中AOP代理由spring的IOC容器负责生成,管理,其依赖关系也有IOC容器负责管理,因此AOP代理可以直接使用容器中的其他Bean实例作为目标,这种关系可由IOC容器的依赖注入提供,是spring 默认使用Java动态代理来创建AOP代理,这样就可以为任何接口实例创建代理了,当需要代理的类不是代理接口的时候,spring会自动切换CGLIB代理,也可以强制使用CGLIB

所需要的步奏

  • 定义普通业务组件。
  • 定义切入点,一个切入点可能横切多个业务组件。
  • 定义增强处理,增强处理就是在 AOP 框架为普通业务组件织入的处理动作。

     下面写一个简单的例子:

1.目标对象的接口

  package com.boge.work;

    public interface IWork {

public void addWork(String name);

}

2.目标类

package  com.boge.work.impl;

import com.boge.work.impl;

public class WorkImpl  implements IWork {

public void addWork(String name){

System.out.println("");

}

}

3.前置通知

package  com.boge.Advice;

import java.lang.reflect.Method;

import  org.springframework.aop.MethodBeforeAdvice;

public class BeforeAdvice implements MethodBeforeAdvice {


 public void before(Method method,Object[] args,Object target)throws Thowable{

System.out.println("");

}

}


4.后置通知

package com.dragon.Advice;
 
import  java.lang.reflect.Method;
 
 import  org.springframework.aop.AfterReturningAdvice;
 

public class AfterAdvice implement AfterReturningAdvice{

  public void  afterReturning(Object returnValue ,Method method,
                 Object[] args,Object target) throwsThrowable{
    System.out.println(";;;;.");
    }

  

}

5.环绕通知

pacage com.boge.advice

import org.aopalliance.intercept.MethodInterceptor;

import org.aopalliance.intercept.MethodInvocation;


public class CompareInterceptor implements MethodInterceptor{'

public Object invoke(MethodInterceptor invocation)throws Throwable{

Object result = null ;

String w_name = invocation.getArguments()[0].toString();

if(w_name.equals("dragon")){

result  = invocation.proceed();


}else{

System.out.printaln("");

}}

result result;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值