是否可以在启动时更改@RequestMapping
值?
基本上我想要的是创建一个注释@Api(Api.Version.V1)
,这意味着请求映射应该从/api/dogs
修改为/api/v1/dogs
。我想在类级别(适用于所有)和方法级别(从早期版本重新使用控制器并修改它)中执行此操作。
我可以对此进行硬编码,但这会留下很多字符串来处理,而且它并不像我想要的那么干净。
是否有可能(使用bpp或类似的东西)在启动期间更改请求映射?在创建bean之后,我不想/需要修改它们。
我一直在研究RequestCondition
,但这似乎有一种更具活力的性质,我不确定在这种情况下它会对我有所帮助。
另一个问题,我希望能够使用相同的请求映射注释两个类(然后让注释重写它),并且我非常确定这需要在初始上下文加载时完成(所以我们不要重复映射等。)
任何指向正确方向的人都会受到赞赏。
修改
这几乎正常工作,我使用自定义RequestMappingHandlerMapping
并重写方法getMappingForMethod
,这允许我获取注释(在类型和方法上)并返回修改后的{ {1}}添加了路径。
即使我删除了所有旧映射并且仅返回RequestMappingInfo
旧映射到/api/v1/dogs
仍然有效,一个问题仍然存在。是否有可能以某种方式删除此映射?
代码在这里,如果有人有兴趣的话。
/api/dogs
答案 0 :(得分:1)
您可以通过实施HandlerMapping
接口或扩展AbstractUrlHandlerMapping
来动态添加requestMappings。
这个想法是创建自己的自定义处理程序映射,而不是使用SimpleUrlHandlerMapping,DefaultAnnotationHandlerMapping
等默认实现