Controllerでもinterfaceをimplementsすることができる

こんばんは。エキサイト株式会社の中尾です。

あまり需要がないかもしれないですが、Controllerでもinterfaceをimplementsすることができます。

ただ普通にimplementsすることは、どんなクラスでもできますが、@RequestMapping@GetMapping()@RequestParam()も使えます。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@RequestMapping("hello")
public interface HelloController {
    /**
     * helloを返すエンドポイント
     *
     * @param hello
     * @return
     */
    @GetMapping()
    String hello(@RequestParam(name = "hello") String hello);
}
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloControllerImpl implements HelloController {
    @Override
    public String hello(String hello) {
        return hello + "\n";
    }
}

気をつけて欲しいのは@RestControllerは実装クラスにつけるということです。

まぁ、swaggerでも良いのですが