Имеет ли смысл иметь аннотированный класс абстрактного контроллера - Spring MVC
Имеет ли смысл иметь аннотированный (@Controller) Абстрактный класс в Spring контейнере, управляемом MVC, в основном хотел бы разместить большинство методов многократного использования, таких как обработчики исключений в классе Abstract и расширьте это с базовым классом, так что не нужно повторять один и тот же шаблонный код. Например.
Абстрактный класс контроллера:
@Controller
abstract class AbstractExternalController {
@ExceptionHandler(NoSuchRequestHandlingMethodException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public @ResponseBody ResponseModel handleNotFoundException() {
final ResponseModel response = new ErrorModel();
response.setStatus("404");
response.setMessage("Resource Not Found");
return response;
}
...
}
Класс базового контроллера
@Controller
class ExternalControllerXXX extends AbstractExternalController {
...
}
Ответы
Ответ 1
Нет необходимости комментировать ваш класс AbstractExternalController
с помощью аннотации @Controller
, хотя, оставив его, ничего не сломает. Независимо от того, есть ли у вас аннотация @Controller
, вы наверняка можете иметь аннотации метода, и они будут работать. Расширяемый вами ExternalControllerXXX
будет добавлен в контекст приложения (поскольку он аннотируется аннотацией по стрептограмме), и будут отмечены аннотации @ExceptionHandler
и @ResponseStatus
.