@로 시작하는 표시는 호출이 아니라 설명입니다.
어노테이션은 클래스나 메서드에 붙는 표식이다. @GetMapping("/")은 home을 호출하는 문장이 아니다. 앱이 켜질 때 Spring이 이 표식을 읽고, GET / 요청을 home 메서드로 보낸다.
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home";
}
}
@Controller는 클래스에, @GetMapping은 메서드에 붙는다. 붙일 수 있는 자리는 어노테이션마다 정해져 있다. 메서드용 표식을 클래스에 붙이면 컴파일 오류다.
| 표식 | Spring이 하는 일 |
|---|---|
@Controller |
이 클래스의 메서드가 웹 주소를 받는다. 반환 문자열은 템플릿 이름이다. |
@RestController |
반환 객체를 JSON으로 보낸다. |
@Service |
이 클래스를 서비스 객체로 만들어 둔다. |
@GetMapping |
GET 주소와 메서드를 연결한다. 저장은 @PostMapping이다. |
표식의 정의도 Java 인터페이스다. 다만 강좌에서 새로 만들어 쓸 일은 없고, Spring이 제공하는 것을 붙이면 된다. 화면과 API로 이어지는 결과는 화면과 API 단원에 있다.