ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • @RequiredArgsConstructor과 @Autowired 차이점
    BackEnd/Spring 2021. 11. 18. 13:57
    반응형

    의존성 주입할때 @Autowired라는 어노테이션을 대게 많이 사용한다.

     

    의존성이란?

    class HiWorld {
       private SayHi sayHi;
    
       public HelloWorld() {
          this.sayHi = new SayHi();
       }
    
       public startHelloWorld() {
          this.sayHi.hello();
       }
    }

    HiWorld 클래스에서 hello함수가 호출되기 위해서는 SayHi 클래스가 필요하다.

    HiWorld 클래스는 SayHi 클래스의 의존성을 가진다고 말한다.

     

    @Autowired 예시

    @Service
    public class UseService {
    
       @Autowired
       private UseDao dao;
       
       @Autowired
       private UseResourceService resource;

    @Autowired를 활용한 의존성 주입을 필드 주입이라고 한다.

    하지만 이 방식은 인텔리제이나, 스프링 팀에서 권장하지 않는다.

     

    @RequiredArgsConstructor 권장

    @Service
    @RequiredArgsConstructor
    public class UseService {
    
       private final UseDao dao;
      
       private final UseResourceService resource;

    Lombok에서 지원하는 @RequiredArgsConstructor 어노테이션을 사용하여 의존성을 주입 하는 것을 생성자 주입이라고 한다.

    스프링 팀은 생성자 주입을 사용할 것을 권장한다.

     

    생성자 주입을 사용할 경우 아래와 같은 장점이 있다.

    ① 순환 참조 방지

    ② 테스트 코드 작성 용이

    ③ 코드 악취 제거

    ④ 객체 변이 방지 (final 가능)

    반응형

    'BackEnd > Spring' 카테고리의 다른 글

    @Resource 어노테이션 이란?  (0) 2021.11.19
    @SuppressWarnings 어노테이션 이란?  (0) 2021.11.18

    댓글

Designed by Tistory.