利用可能な Spring の最新バージョン (3.1.1) を使用するようにアプリケーションをアップグレードすると、REST 呼び出しの 1 つが 404 エラーをスローすることがわかりました (以前は完全に成功していました)。コードを変更せずに、古いライブラリ (3.0.3) への切り替えと新しいライブラリへの切り替えが失敗することを確認しました。
@Controller
@RequestMapping("/group/{groupId}/template")
public class TemplateController extends AbstractController {
...
@RequestMapping(value="/{templateId}", method=RequestMethod.GET) @ResponseBody
public Template getTemplate(ServletWebRequest request,
@PathVariable("groupId") int groupId,
@PathVariable("templateId") int templateId) throws Exception {
...
}
...
@RequestMapping(value="/{templateId}", method=RequestMethod.DELETE) @ResponseBody
public Task getTemplate(ServletWebRequest request,
@PathVariable("groupId") int groupId,
@PathVariable("templateId") int templateId) throws Exception {
...
}
...
}
比較のためだけに GET メソッドを挿入しましたが、うまくいきました。ただし、DELETE メソッド (以前は機能していました) を要求すると、ログに次のようなエラーが返されます。
WARNING: No mapping found for HTTP request with URI [/*appname*/group/1/template/group/1/template/1] in DispatcherServlet with name '*appname*'
エラーは明らかに正しく、そのマッピングの URI はありませんが、指定されたマッピング ( /*appname*/group/1/template/1
) ではなく、そのマッピングを見つけようとするのはなぜですか?