spring Aop

导入包

<!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
<dependency>
   
<groupId>org.springframework</groupId>
   
<artifactId>spring-aspects</artifactId>
   
<version>4.3.10.RELEASE</version>
</
dependency>

 

定义业务层方法

package com.jbit.service;
import org.springframework.stereotype.Service;
@Service
public class Div {
   
public int div(int x ,int y){ return x/y; }
}

 

 

定义切面类

package com.jbit.config;
  
  
  import org.aspectj.lang.JoinPoint;
  import org.aspectj.lang.annotation.*;
  
  import java.util.Arrays;
  
  @Aspect  //容器是一个切面类。
  public class LogAspects {
  
    /**
     * 抽取切入点表达式
     * <li>本类引用:pointcut()</li>
     * <li>其它类引用:com.jbit.config.pointcut()</li>
     */
    @Pointcut("execution(public int com.jbit.service.Div.div(int,int))")
    public void pointcut(){ }
  
  
    @Before("pointcut()"//方法运行之前运行
     public void logStart(JoinPoint joinPoint){
         System.out.println(""+joinPoint.getSignature().getName()+"方法运行.......参数列表:{"+Arrays.asList(joinPoint.getArgs()) +"}");
     }
  
     @After("pointcut()")//方法运行之后(方法正常是异常束)
    public void logEnd(JoinPoint joinPoint){
        System.out.println(""+joinPoint.getSignature().getName()+"方法束.......");
    }
  
    @AfterReturning(value="pointcut()",returning = "result")    //返回通知
    public void logReturn(JoinPoint joinPoint, Object result){
        System.out.println(""+joinPoint.getSignature().getName()+"方法果返回.......运行果{"+result+"}");
    }
  
    @AfterThrowing(value = "pointcut()",throwing = "exception")   //异常通知
    public void logException(JoinPoint joinPoint,Exception exception){
        System.out.println(""+joinPoint.getSignature().getName()+"方法异常.......异常果{"+exception+"}");
    }
  
  //    @Around(value = "pointcut()")
//    public void logAround(JoinPoint joinPoint){
//        System.out.println(""+joinPoint.getSignature().getName()+"运行.......@Around");
//    }
  }

 

 

装载IOC

package com.jbit.config;
  
  
  import com.jbit.service.Div;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
  import org.springframework.context.annotation.EnableAspectJAutoProxy;
  
  @Configuration
@EnableAspectJAutoProxy//开启aop功能,启用基于注解的aop功能
  public class Config {
  
    @Bean   //将要切入的类加入到容器中。
    public Div div(){
        return new Div();
    }
  
    @Bean //将切面类加入到容器中
    public LogAspects logAspects(){
        return new LogAspects();
    }
}

 

 

测试

import com.jbit.service.Div;
  import org.junit.Test;
  import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  
  public class T {
   @Test
    public void test1() {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(com.jbit.config.Config.class);
        Div div = context.getBean(com.jbit.service.Div.class);
        div.div(1,1);
  
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值