빈주입방식

스프링에서는 빈을 주입하는 방식이 @Autowried, setter, 생성자가 있지만

그 중에 가장 권장하는 방식은 생성자로 주입받는 방식이다.

  • @Autowired는 권장하지 않는다.

  • 생성자로 Bean 객체를 받도록 하면 @Autowired와 동일한 효과를 볼수있다

  • @RequiredArgsConstructor

    • final로 선언된 모든 필드를 인자값으로 하는 생성자

    • 생성자를 따로 생성하지 않고 롬복 어노테이션을 사용하는 이유는 해당 클래스의 의존성 관계가 변경될 때마다 생성자 코드를 계속해서 수정하는 번거움을 해결하기 위함

    • 롬복 어노테이션이 있으면 해당 컨트롤러에 새로운 서비스를 추가하거나, 기존 컴포넌트를 제거하는 등의 상황이 발생해도 생성자 코드는 전혀 손대지 않아도 된다.

    ex)

    @RequiredArgsConstructor
    @RestController
    public class PostsApiController {
       private final PostsService postsService;

       @PostMapping("/api/v1/posts")
       public Long save(@RequestBody PostsSaveRequestsDto requestsDto) {
           return postsService.save(requestsDto);
      }
    }
    • PostsService를 final로 선언하여 @RequiredArgsConstructor가 생성자를 생성해줌


+ Recent posts