用springboot编写在一个实现类执行前后各执行一个方法,用切面实现,并且输出执行切面方法映射的类名
时间: 2023-03-29 16:03:50 浏览: 132
可以使用Spring AOP来实现这个功能。首先,我们需要定义一个切面类,使用@Aspect注解标注,然后在切面类中定义一个@Before注解的方法和一个@After注解的方法,分别在目标方法执行前和执行后执行。在这两个方法中,我们可以使用JoinPoint参数来获取目标方法的信息,包括目标方法所在的类名。最后,我们可以使用@Pointcut注解来定义切点,指定需要被切入的目标方法。具体实现可以参考以下代码:
@Aspect
@Component
public class MyAspect {
@Pointcut("execution(* com.example.demo.MyServiceImpl.*(..))")
public void myPointcut() {}
@Before("myPointcut()")
public void before(JoinPoint joinPoint) {
System.out.println("执行方法前,目标类名:" + joinPoint.getTarget().getClass().getName());
}
@After("myPointcut()")
public void after(JoinPoint joinPoint) {
System.out.println("执行方法后,目标类名:" + joinPoint.getTarget().getClass().getName());
}
}
其中,MyServiceImpl是我们需要切入的目标类,*表示任意方法名,(..)表示任意参数列表。在@Before和@After注解中,我们可以使用joinPoint.getTarget().getClass().getName()来获取目标方法所在的类名。最后,我们需要在Spring Boot的启动类中添加@EnableAspectJAutoProxy注解来启用AOP功能。
阅读全文