私のアプリケーションには、異なる (http) メソッドで同じリクエスト マッピングを使用する 2 つのメソッドがあります。
@RequestMapping(value = "/method/{key}", method = RequestMethod.GET)
public void method1(<parameters>) throws IOException {
// ...
}
@RequestMapping(value = "/method/{key}", method = RequestMethod.PUT)
public void method2(<parameters>) throws IOException {
// ...
}
両方のメソッドが同じコントローラーで定義されている限り、これは完全に機能しますが、使用している会社のフレームワークのため、2 つの異なるコントローラーにある必要があり、アプリケーションを起動すると、次のエラーが発生します。 :
原因: java.lang.IllegalStateException: ハンドラー 'MyController#0' を URL パス [/method/{key}] にマップできません: タイプ [class OtherController$$EnhancerByCGLIB$$54a955d] のハンドラーが既にマップされています。org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:390) で org.springframework.web.servlet.handler.AbstractUrlHandlerMapping.registerHandler(AbstractUrlHandlerMapping.java:362) で org.springframework.web.servlet .handler.AbstractDetectingUrlHandlerMapping.detectHandlers(AbstractDetectingUrlHandlerMapping.java:82) at org.springframework.web.servlet.handler.AbstractDetectingUrlHandlerMapping.initApplicationContext(AbstractDetectingUrlHandlerMapping.java:58) at org.springframework.context.support.ApplicationObjectSupport.
それらを異なるコントローラーで定義することはまったく可能ですか、それとも (URL の 1 つの名前を変更するなどの) いくつかの (恐ろしい) 回避策を検討する必要がありますか?