Spring Boot에서 @Autowired 대신 @RequiredArgsConstructor 를 써보자!

Karim·2021년 12월 20일
7

SpringBoot

목록 보기
5/15
post-thumbnail

1. Version

💬

  • spring boot : 2.6.1

2. 의존성 주입이란?

💬 DI

  • 컨테이너에서 관리할 객체를 지정해주고, 코드내에서 객체를 받아 사용하는 방식이다.
    예전에는 new className() 또는 getInstance() 등의 메서드 등을 통해 받아서 넣어주는 방식을 사용했다.

3. @Autowired

💬 @Autowired란

  • 이 어노테이션을 특정 필드에 부여하면 IoC컨테이너 안에 존재하는 특정 필드와 같은 타입의 Bean을 찾아 자동으로 주입해준다.

💬 @Autowired Code

  • 의존성을 주입할 객체 위에 @Autowired 어노테이션을 붙여주면 자동으로 의존성이 주입된다.
public class AutowiredExController {

    @Autowired
    private AutowiredExService autowiredExService;

}

💬 spring 4.3 부터는 위 방법을 지양한다.

4. @Autowired 대신 @RequiredArgsConstructor 지향하는 이유

💬

  • 순환 참조 방지
    • 객체의 의존성을 추가하다 보면 순환 참조 문제가 발생할 수 있다. 이러면 서버가 죽어버린다.

      A가 B를 참조하고, B가 A를 참조

  • final 선언이 가능하다.
    • 런타임에 객체 불변성을 보장한다.
  • 테스트 코드 작성 용이
    • 스프링 컨테이너 도움 없이 테스트 코드를 편리하게 작성할 수 있다.

5. @RequiredArgsConstructor

💬 @RequiredArgsConstructor란

  • 생성자를 자동으로 생성해주는 어노테이션이다.
  • final 키워드가 붙은 멤버변수를 생성자 파라미터로 알아서 넣어준다.

💬 @RequiredArgsConstructor Code

public class AutowiredExController {

   @RequiredArgsConstrucotr
   final AutowiredExService autowiredExService;

}

--->  위와 아래랑 같다.

    public AutowiredExController(finale AutowiredExService autowiredExService) {
    	this.autowiredExService =autowiredExService;
    }

📚 참고

profile
나도 보기 위해 정리해 놓은 벨로그

0개의 댓글