切面方面的jar包
<!-- Spring AOP 切面 模块 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.2</version>
</dependency>
public class CustomerBoImpl implements CustomerBo {
public void addCustomer(){
System.out.println("addCustomer() is running ");
}
}
xml中:
<aop:aspectj-autoproxy />
<bean id="customerBo" class="com.lhl.aop.CustomerBoImpl" />
<bean id="logAspect" class="com.lhl.aop.LoggingAspect" />
配置切面类:
package com.lhl.aop;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
/**
* @author lhl
* @version 1.0
* @date 2019/12/4 11:22
* @description TODO
*/
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.lhl.aop.CustomerBo.addCustomer(..))")
public void logBefore() {
System.out.println("logBefore() is running!");
System.out.println("******");
}
@After("execution(* com.lhl.aop.CustomerBo.addCustomer(..))")
public void logAfter() {
System.out.println("logAfter() is running!");
System.out.println("******");
}
}
测试:
由此,简单实现了切面的功能。
还可以在某包下所有方法执行前执行。
注意:execution()语法的使用。百度即可找到各种用法。
百度找到的一个:
匹配com.baobaotao包下所有类的所有方法;
execution(* com.baobaotao..*(..))l
匹 配com.baobaotao包、子孙包下所有类的所有方法,如com.baobaotao.dao,com.baobaotao.servier以及 com.baobaotao.dao.user包下的所有类的所有方法都匹配。
有啥不懂得小伙伴们加qq群交流啦:852665736;本群致力于一同进步的小伙伴们,大家一起交流探讨,在陌生的城市感受温暖;