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。

SpringBoot 项目启动和请求日志打印实现方法

原文地址: https://www.cveoy.top/t/topic/bR7P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录