
스프링에서 어떤 URL 요청을 어떤 클래스/메서드가 처리할지 연결해주는 어노테이션
클래스 위에 붙이는 경우: 공통 주소를 묶을 때 사용@RestController
@ReqeustMaping("/app")
public class HelloController{
@GetMapping("/hello")
public String hello(){
return "hello";
}
@GetMapping("greet")
public String greet(Model model){
model.addAttribte("greet", "Hello");
return "greet";
}
}
메서드에 붙이는 경우: 구체적인 요청 주소를 정할 때 사용/articles/search'가 된다.@RestController
@ReqeustMaping("/articles")
public class ArticleController{
@RequestMapping("/search"){
return "검색 결과";
}
}
@Controller와 @RestController의 차이@Controller: 화면(View)을 반환할 때 사용"home"은 보통 home.html,home.jsp같은 화면 파일 이름으로 처리된다. (Thymeleaf 의존성 사용시)@Controller
public class HomeController {
@GetMapping("/home")
public String home() {
return "home";
}
}
@RestController: 데이터 자체를 반환할 때 사용. 반환값을 http 응답 본문(Response Body)에 그대로 넣어준다. @Controller + @ResponseBody
application.yamlserver:
port: 8000
src/main/resources 폴더에 작성✅properties 파일
welcome = 대한민국에 오신 것을 환영합니다.
welcome.city = 대한민국의 수도는 <b>서울</b>입니다.
✅html ${Key} 형식
<p th:text="#{welcome}"></p>
<p th:utext="#{welcome.city}"></p>
th:text: 문자를 텍스트로 그래도 출력
th:utext: html 태그를 해석해서 출력
✅properties 파일
hello.name=안녕하세요, {0}님!
order.info={0}님이 {1}개 상품을 주문했습니다.
✅html
<p th:text="#{hello.name('지원')}"></p>
<p th:text="#{order.info('지원', 3)}"></p>
✅결과
안녕하세요, 지원님!
지원님이 3개 상품을 주문했습니다.