方法:在你springboot项目的基础上,创建下面的类:
package com.llq.wahaha.listener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.stream.Collectors;
/**
* @author llq
* @Description ApplicationListener实现类
*/
@Component
public class ControllerPrinter implements ApplicationListener<ApplicationEvent> {
@Autowired
private ApplicationContext applicationContext;
@Override
public void onApplicationEvent(ApplicationEvent event) {
System.out.println("-----------------------");
Arrays.stream(applicationContext.getBeanDefinitionNames())
.filter(name -> applicationContext.getType(name).isAnnotationPresent(RestController.class))
.forEach(controllerName -> {
Class<?> controllerClass = applicationContext.getType(controllerName);
System.out.println("Controller: " + controllerClass.getName());
Arrays.stream(controllerClass.getDeclaredMethods())
.filter(method -> method.isAnnotationPresent(RequestMapping.class))
.forEach(method -> {
System.out.printf("\tMethod: %s%n\t\tRequestMapping: %s%n",
method.getName(),
Arrays.stream(method.getAnnotationsByType(RequestMapping.class))
.map(RequestMapping::value)
.flatMap(Arrays::stream)
.collect(Collectors.joining(", ")));
});
});
}
}