<dependencies> ... <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> ... </dependencies> package com.example.aspect; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Aspect @Component public class LoggingAspect { private final Logger logger = LoggerFactory.getLogger(LoggingAspect.class); @Pointcut("execution(* com.example.service.*.*(..))") public void serviceMethods() {} @Before("serviceMethods()") public void logBefore(JoinPoint joinPoint) { logger.info("Method execution started: {}", joinPoint.getSignature()); } @After("serviceMethods()") public void logAfter(JoinPoint joinPoint) { logger.info("Method execution completed: {}", joinPoint.getSignature()); } } package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.EnableAspectJAutoProxy; @SpringBootApplication @EnableAspectJAutoProxy public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } package com.example.service; import org.springframework.stereotype.Service; @Service public class UserService { public void saveUser(String username) { } } package com.example; import com.example.service.UserService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class ApplicationTest { @Autowired private UserService userService; @Test public void testSaveUser() { userService.saveUser("John Doe"); } }


上一篇:
下一篇:
切换中文