1.修改pom.xml,引入aop相关的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.定义aspect
package com.aop;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
import oracle.sql.DATE;
@Aspect
@Component
@Slf4j
public class ServiceAspect {
@Before(value = "execution(* com.service.*.*(..))")
public void beforeService() throws SQLException {
log.debug("执行service前"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
@After(value = "execution(* com.service.*.*(..))")
public void afterService() throws SQLException {
log.debug("执行service后"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
}
}
这里注意几点:
(1)使用slf4j的logger对象时,必须要有一个注解@slf4j
(2)apectj的表达式一定要写对,否则切面就无法正常生效
(3)@Component是要将类加入到springIoc容器中,如果不加这个注解,aspect就无法织入
测试截图