12

Spring MVC駆動型コンテナーに注釈付き(@Controller)Abstractクラスを含めることは理にかなっていますか?基本的に、例外ハンドラーなどの再利用可能なメソッドのほとんどを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  {

...
}
4

1 に答える 1

10

AbstractExternalControllerクラスに注釈を付ける必要は@Controllerありませんが、そのままにしておくと何も壊れません。アノテーションがあるかどうかに関係なく@Controller、メソッドアノテーションを確実に持つことができ、それらは機能します。拡張ExternalControllerXXXすると、アプリケーションコンテキストに追加され(ステレオタイプアノテーションが付けられているため)、@ExceptionHandlerおよび@ResponseStatusアノテーションが尊重されます。

于 2012-11-09T18:30:52.187 に答える