[JAVA] Rufen Sie den in der Controller-Klasse von Spring Boot definierten Pfad als Liste ab

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);
                    }));
        }
    }
}

Ignorieren Sie Ausnahmen und Pfadvariablen und rufen Sie trotzdem die Liste der in der Anmerkung definierten Pfadzeichenfolgen ab. Der Teil, der ClassPathScanningCandidateComponentProvider verwendet, um die Metadaten von abzurufen Ist der Schlüssel. Abgesehen davon erhalte ich die Methode normalerweise durch Reflexion und schaue mir den Wert der Anmerkung stetig an. Um eine realistische Sitemap zu erstellen, müssen Sie vorsichtig sein, z. B. Variablen durch erwartete Werte ersetzen, private URLs ausschließen usw. Referenz

So erhalten Sie die Klasse mit zur Java-Laufzeit definierten Anmerkungen

Recommended Posts

Rufen Sie den in der Controller-Klasse von Spring Boot definierten Pfad als Liste ab
Rufen Sie in Spring Boot eine Proxy-Instanz der Komponente selbst ab
[Rails] Liste der in Controller definierten Aktionen
Rufen Sie eine Liste anderer Sitzungen desselben Benutzers ab, wenn Sie Redis Session mit Spring Boot (Serie 2) verwenden. Entsorgen Sie es auch.
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
Geben Sie die statische Ressourcencodierung in Spring Boot an
Rufen Sie den Namen des Testfalls in der JUnit-Testklasse ab
Holen Sie sich eine Liste der Klassen in einem Guava-spezifischen Paket
Eine Geschichte voller Grundlagen von Spring Boot (gelöst)
Ein Programm, das die Anzahl der Wörter in einer Liste zählt
Untersuchen Sie die Liste der Zeitzonen-IDs, die in der Java ZoneId-Klasse verfügbar sind
Rufen Sie die öffentliche URL der privaten Datei von Flickr in Java ab
So geben Sie eine Liste von Zeichenfolgen in JSF als durch Kommas getrennte Zeichenfolgen aus
[Spring Boot] Bis @Autowired in der Testklasse [JUnit5] ausgeführt wird
Ich möchte die Methode des Controllers kennen, bei der die Ausnahme im ExceptionHandler von Spring Boot ausgelöst wurde
Holen Sie sich das Ergebnis von POST in Java
Autowired-Felder in einer Klasse, die TextWebSocketHandler in Spring Boot erbt, werden NULL
Schritte zum Ausführen von Spring Boot beziehen sich auf die Werte in der Eigenschaftendatei
So erhalten Sie das aktuelle Datum als Zeichenfolge im Format JJJJMMTT
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
[Spring Boot] Liste der Validierungsregeln, die in der Eigenschaftendatei für Fehlermeldungen verwendet werden können
graphql-ruby: So erhalten Sie den Namen der Abfrage oder Mutation im Controller Hinweis
Einführung des Spring Boot Actuator, einer Funktion, die die Bedienung von Spring Boot-Anwendungen erleichtert
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
Organisieren Sie die Unterschiede im Verhalten von @NotBlank, @NotEmpty und @NotNull mit Spring Boot + Thymeleaf
Benennen und rufen Sie in Ruby übergeordnete Klassenmethoden explizit auf
Melden Sie sich bei Spring Boot-Webanwendungen auf der Microsoft ID-Plattform an
Legen Sie die Quelle der Bibliothek als Abhängigkeit in IntelliJ als separates Modul des Projekts fest
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
Ich möchte rekursiv die Oberklasse und die Schnittstelle einer bestimmten Klasse erhalten
Testen Sie den Controller mit Mock MVC im Spring Boot
Führen Sie ein Spring Boot-Projekt mit VS-Code aus
Messen Sie die Größe eines Ordners mit Java
Wenn Sie sich im Klassennamen verlieren
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie
Lassen Sie uns das Gefühl von Spring Boot + Swagger 2.0 überprüfen
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Java-Tipps - Erstellen Sie mit Gradle ein Spring Boot-Projekt
Ein kurzer Überblick über Java, das im Unterricht gelernt wurde
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an
Ich möchte die MD5-Prüfsumme einer Datei in Java finden und das Ergebnis als Zeichenfolge in hexadezimaler Notation erhalten.
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
Extrahiert den Wert von HashMap und gibt das nach dem Wert von value sortierte Ergebnis als Liste zurück.
[Spring Boot] Die Geschichte, dass die Bean der Klasse mit der Annotation ConfigurationProperties nicht gefunden wurde
Überprüfen Sie das Verhalten von getOne-, findById- und Abfragemethoden mit Spring Boot + Spring Data JPA
Passen Sie die Anzeige an, wenn im Spring Boot ein Fehler wie 404 Not Found auftritt
Holen Sie sich im Frühjahr mehrere Ressourcen, die dem Muster entsprechen
Untersuchte asynchrone Ausführung von Abfragen in Spring Boot 1.5.9
Rufen Sie eine Liste mit MBean-Informationen für Java-Anwendungen ab
Ein kurzer Überblick über Java, das in Klasse 4 gelernt wurde
[Für Anfänger] DI ~ Die Grundlagen von DI und DI im Frühjahr ~
Ein Memorandum über die Sucht nach Spring Boot2 x Doma2
Greifen Sie mit jdbcTemplate auf das integrierte h2db des Spring Boot zu
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
[Ruby / Rails] Legen Sie einen eindeutigen (eindeutigen) Wert in der Klasse fest