2017-12-12 26 views
0

私はSpringブートアプリケーションに取り組んでおり、RequestMappingが既に初期化された後に@RestController beanを追加しています。
新しいコントローラBeanはWebコンテキストにありますが、後で追加されたため、アプリケーションの起動が完了するとマッピングがありません。RequestMappingHandlerMappingをリフレッシュする方法はありますか?

[私はマッピングでメソッドを再登録するすべてのBeanを呼び出すと仮定]私はRequestMappingHandlerMappingの「afterPropertiesSetを()」を呼び出すことができ期待していたが、私はあいまいなマッピングで終わるを登録する方法はあります特定のBeanをリフレッシュするか、RequestMappingHandlerMappingを更新しますか?

私はコンフィギュレーションプロジェクトによって参照されていない別のプロジェクトで@RestControllerを持っている -

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 

別の方法を尋ねます。
私は設定プロジェクトと@RestControllerを持つ 'module'プロジェクトの両方を参照する3番目のプロジェクトを持っています。

RequestMappingHandlerMappingを設定する前に、モジュールプロジェクトの@RestControllerをアプリケーションコンテキストに確実に追加する方法を教えてください。
メインプラットフォーム - - https://github.com/savantly-net/sprout-platform/tree/development/

自動設定プロジェクト - https://github.com/savantly-net/sprout-platform/tree/development/spring/sprout-spring-boot-starter

モジュールプロジェクト - https://github.com/savantly-net/sprout-platform/tree/development/modules/sprout-wiki-module

は、私はここでのプロジェクトを参照してください...多分私は何とかそれを使用することができます考えて、カスタムアノテーションを作成しましたフルWebプロジェクト - https://github.com/savantly-net/garden/tree/development

このプロジェクトをビルドすると、 wikiモジュールBeanはアプリケーションコンテキストに追加されますが、@RestControllerはマップされません。

どのような考えですか?

+1

これが参考になっhttps://stackoverflow.com/a/5758529/1527544かもしれ – Antoniossss

答えて

0

ウェブアプリケーションのモジュール宣言を@Beanから@Importに変更し、問題を解決しました。私はこれがモジュールプロジェクトでBeanの順序を突き上げたと仮定しています。後

@SpringBootApplication 
public class GardenWebApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(GardenWebApplication.class, args); 
    } 

    @Bean 
    public WikiModule wikiModule() { 
     return new WikiModule(); 
    } 
} 

- - 前

@SpringBootApplication 
@Import(WikiModule.class) 
public class GardenWebApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(GardenWebApplication.class, args); 
    } 
} 
関連する問題