본문 바로가기
프로그래밍/TIL

[TIL] Spring Annotation

by 코딩중독 2024. 1. 26.

목차

    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();
        }
    }