Beim Erstellen von sitemap.xml für die mit SpringBoot erstellte Site habe ich überprüft, wie der Wert der Annotation @RequestMapping abgerufen wird, die an die Methode der Controller-Klasse angehängt ist. Machen Sie sich also eine Notiz.
Test.java
import java.util.Arrays;
import java.util.Set;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.core.type.filter.AnnotationTypeFilter;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
public class Test {
public static void main(String[] args) throws ClassNotFoundException {
ClassPathScanningCandidateComponentProvider scanner =
new ClassPathScanningCandidateComponentProvider(false);
scanner.addIncludeFilter(new AnnotationTypeFilter(Controller.class));
Set<BeanDefinition> beanSet = scanner.findCandidateComponents("/* controller package string */");
for (BeanDefinition def : beanSet) {
Class<?> clazz = Class.forName(def.getBeanClassName());
Arrays.stream(clazz.getDeclaredMethods()).map(m -> m.getAnnotation(RequestMapping.class)).filter(
a -> a != null && a.value().length > 0).forEach(a -> Arrays.stream(a.value()).forEach(p ->{
System.out.println(p);
}));
}
}
}
So erhalten Sie die Klasse mit zur Java-Laufzeit definierten Anmerkungen
Recommended Posts