Начиная с Struts2, я привык объявлять аннотацию @Namespace
для суперклассов (или package-info.java
), а наследующие классы впоследствии будут зацикливаться на значении в аннотации @Namespace
своих предков и довести его до запроса путь для действия. Теперь я пытаюсь сделать что-то подобное в Spring MVC с помощью аннотации @RequestMapping
следующим образом (код сокращен для краткости):
package au.test
@RequestMapping(value = "/")
public abstract class AbstractController {
...
}
au.test.user
@RequestMapping(value = "/user")
public abstract class AbstractUserController extends AbstractController {
@RequestMapping(value = "/dashboard")
public String dashboard() {
....
}
}
au.test.user.twitter
@RequestMapping(value = "/twitter")
public abstract class AbstractTwitterController extends AbstractUserController {
...
}
public abstract class TwitterController extends AbstractTwitterController {
@RequestMapping(value = "/updateStatus")
public String updateStatus() {
....
}
}
-
/
работает как ожидается -
/user/dashboard
работает как ожидалось - Однако, если бы я ожидал, что
/user/twitter/updateStatus
будет работать, это не будет и проверка журналов, я могу увидеть запись в журнале, которая выглядит примерно так:
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - URL-адрес сопоставленного URL [/tweeter/updateStatus] на обработчике 'TwitterController'
Можно ли включить параметр, который будет сканировать суперклассы для аннотаций @RequestMapping
и построить правильный путь?
Также я полагаю, что определение @RequestMapping
в пакете в package-info.java
является незаконным?