SpringBoot 项目启动和请求日志打印实现方法
SpringBoot 项目启动和请求日志打印实现方法
1. SpringBoot 启动完成前打印 '项目启动成功'
以下是三种方式实现在 Spring Boot 启动完成前,在控制台打印'项目启动成功'的方法:
方式一:使用 ApplicationRunner 接口
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class StartupRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println('项目启动成功');
}
}
方式二:使用 CommandLineRunner 接口
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class StartupRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println('项目启动成功');
}
}
方式三:使用 @PostConstruct 注解
import javax.annotation.PostConstruct;
import org.springframework.stereotype.Component;
@Component
public class StartupRunner {
@PostConstruct
public void init() {
System.out.println('项目启动成功');
}
}
2. 打印发送请求的 URL
以下是实现在 Spring Boot 项目中,在控制台打印发送请求的 URL 的方法:
首先,可以使用 AOP(面向切面编程)来实现在控制器方法执行前打印请求 URL。创建一个切面类和一个切点表达式,然后通过切面类中的方法来处理打印请求 URL 的逻辑。
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
@Aspect
@Component
public class RequestLoggerAspect {
@Pointcut("execution(* com.example.controllers.*.*(..)) ")
public void controllerMethods() {}
@Before("controllerMethods() ")
public void logRequest(JoinPoint joinPoint) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
String url = request.getRequestURL().toString();
System.out.println('请求URL:' + url);
}
}
上述代码中,通过定义 controllerMethods() 切点来匹配所有的控制器方法。在 logRequest() 方法中,使用 RequestContextHolder 获取当前请求的 HttpServletRequest 对象,然后通过该对象获取请求 URL 并打印出来。
请注意,还需要确保在 Spring Boot 应用程序的主类上添加 @EnableAspectJAutoProxy 注解,以启用切面的自动配置。
这样,在每次请求到达控制器方法之前,都会在控制台打印发送请求的 URL。
原文地址: https://www.cveoy.top/t/topic/bR7P 著作权归作者所有。请勿转载和采集!