Ich arbeite an einer Spring Boot-Anwendung - und @RestController-Beans hinzufügen, nachdem das RequestMapping bereits initialisiert wurde.
Ich kann sehen, die neuen Controller-Beans sind im Web-Kontext, aber da sie nachher hinzugefügt wurden, gibt es keine Zuordnung, wenn die Anwendung beendet wird.Gibt es eine Möglichkeit, das RequestMappingHandlerMapping zu aktualisieren?
Ich hatte gehofft, ich könnte „afterPropertiesSet()“ rufen die RequestMappingHandlerMapping, aber ich am Ende mit mehrdeutigen Zuordnungen bis [I das Verfahren erneut registriert alle Bohnen mit Mappings assume Aufruf]
Gibt es eine Möglichkeit zu registrieren bestimmte Beans, oder aktualisieren Sie die RequestMappingHandlerMapping?
Caused by: java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path 'http://localhost:52765/error': {public org.springframework.http.ResponseEntity org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest), public org.springframework.http.ResponseEntity org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)}
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:367) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:314) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:61) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:352) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1160) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:940) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
... 26 common frames omitted
Fragen eine andere Art und Weise -
ich ein @RestController in einem separaten Projekt, das nicht durch die Konfiguration Projekt verwiesen wird.
Ich habe ein drittes Projekt, das sowohl das Konfigurationsprojekt als auch das 'Modulprojekt' mit dem @RestController referenziert.
Wie stelle ich sicher, dass @RestController im Modulprojekt dem Anwendungskontext hinzugefügt wird, bevor RequestMappingHandlerMapping konfiguriert ist?
Ich habe eine benutzerdefinierte Anmerkung, vielleicht denken sie, ich könnte irgendwie verwenden .. hier die Projekte einsehen -
Hauptplattform - https://github.com/savantly-net/sprout-platform/tree/development/
Automatische Konfiguration Projekt - https://github.com/savantly-net/sprout-platform/tree/development/spring/sprout-spring-boot-starter
Modul Project - https://github.com/savantly-net/sprout-platform/tree/development/modules/sprout-wiki-module
Vollständiges Webprojekt - https://github.com/savantly-net/garden/tree/development
Wenn Sie dieses Projekt erstellen, sehen Sie das Wiki-Modul-Beans werden dem Anwendungskontext hinzugefügt, aber @RestController wird niemals zugeordnet.
Irgendwelche Gedanken?
Dies kann hilfreich https://stackoverflow.com/a/5758529/1527544 – Antoniossss