1.编写属性类
@Component
public class AllUrlProperties implements InitializingBean, ApplicationContextAware {
private ApplicationContext applicationContext;
@Getter
@Setter
private List<String> urls = new LinkedList<>();
@Override
public void afterPropertiesSet() throws Exception {
RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();
map.keySet().forEach(info -> {
HandlerMethod handlerMethod = map.get(info);
Optional.ofNullable(handlerMethod).ifPresent(method -> {
info.getPatternsCondition().getPatterns().forEach(url -> {
urls.add(url);
});
});
});
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
2.调用
@RequestMapping("/aaa")
public String getValue() {
Map<String, AllUrlProperties> beansOfType = applicationContext.getBeansOfType(AllUrlProperties.class);
Optional.ofNullable(beansOfType).ifPresent(x -> {
beansOfType.keySet().forEach(key -> {
beansOfType.get(key).getUrls().forEach(url -> {
System.out.println(url);
});
});
});
return name;
}