목차
Target : 어노테이션을 붙일 수 있는 위치
@Bean
- Target : METHOD (메서드 레벨)
- 개발자 본인이 직접 제어할 수 없는 Method에 사용한다.
- 일반적으로 외부 라이브러리를 Bean으로 등록할 때 사용한다.
@Component
- Target : TYPE (Class, Interface, enum 등 클래스 레벨)
- 개발자가 직접 개발해서 제어할 수 있는 클래스를 Bean으로 등록할 때 사용한다.
@Controller
- Bean으로 등록되어 View를 렌더링 해서 보여준다.
- 핸들러메서드에서 ViewName을 반환한다.
@RequestMapping("/home")
public String index() {
return "index";
}
- 뷰페이지에 데이터를 전달하기 위한 데이터바인딩은 Model, ModelAndView를 사용한다.
@RequestMapping("/list")
public String list(Model model) { // 객체바인딩을 위한 Model
var bookList = bookMapper.list();
model.addAttribute("list", bookList);
return "list";
}
- 데이터만 반환해야 하는 경우에는 @ResponseBody를 붙여서 사용한다.
@RequestMapping("/rest")
@ResponseBody
public List<String> rest() {
List<String> list = new ArrayList<>();
list.add("자바");
list.add("스프링");
list.add("부트");
return list;
}
@RestController
- Json형태의 데이터를 반환하는 Json 응답 컨트롤러이다.
- @Controller 어노테이션에 @ResponseBody가 포함된 것과 동일하게 작동한다.
- 일반적으로 Api를 개발할 때 사용한다. (Restful Service : GET, POST, PUT, DELETE)
@RequestMapping("/rest-api")
@RestController
public class RestApiController {
@GetMapping("/test1")
public UserDTO readUser() {
return UserDTO.builder()
.id(1)
.userName("milk")
.password("sdf1234")
.build();
}
}
'프로그래밍 > TIL' 카테고리의 다른 글
[TIL] JpaAuditing 설정하고 사용하기 (0) | 2024.02.28 |
---|---|
[TIL] LocalDateTime to String, String to LocalDateTime (0) | 2024.01.31 |
[TIL] Spring Legacy - Java의 enum값을 MySQL 넣기 (0) | 2024.01.30 |
[TIL] LocalDate, LocalTime, LocalDateTime (0) | 2024.01.29 |
[TIL] MyBatis 그리고 ObjectMapper (0) | 2024.01.28 |