본문 바로가기

개발중/Spring

@RequiredArgsConstructor 와 @Autowired 의 차이점

728x90
반응형

 

@RequiredArgsConstructor와 @Autowired는 
둘 다 Spring Framework와 관련된 주석(annotations)이지만, 
주로 Lombok과 Spring Framework에서 사용되며, 
각각의 목적과 작동 방식이 다릅니다.

 

RequiredArgsConstructor (Lombok)


이 주석은 Lombok 라이브러리에서 제공합니다.
클래스 내에 final 또는 @NonNull로 선언된 필드에 대한 생성자를 자동으로 생성해 줍니다. 

이렇게 생성된 생성자는 필요한 의존성을 주입 받는 데 사용될 수 있습니다.
Spring에서 이 생성자를 사용하여 생성자 기반의 의존성 주입을 할 수 있습니다.

 

@RequiredArgsConstructor
public class MyService {
    private final MyRepository repository;
}

 

위의 코드는 다음과 같이 생성자를 자동으로 생성합니다:

public MyService(MyRepository repository) {
    this.repository = repository;
}

 

@Autowired (Spring Framework)


Spring Framework에서 제공하는 주석입니다.
주로 필드, 생성자, setter 메서드에 적용하여 Spring Container로부터 자동으로 bean을 주입받습니다.

 

* Spring 4.3부터 생성자가 한 개만 존재하는 클래스에서는 @Autowired 주석을 생략해도 자동으로 생성자 기반의 의존성 주입이 이루어집니다.

 

@Service
public class MyService {
    private final MyRepository repository;

    @Autowired
    public MyService(MyRepository repository) {
        this.repository = repository;
    }
}

 


@RequiredArgsConstructor는 Lombok을 사용하여 필요한 생성자를 자동으로 만드는 데 사용되며, 

@Autowired는 Spring에서 의존성 주입을 위해 사용됩니다.


@RequiredArgsConstructor와 생성자 기반의 의존성 주입을 함께 사용하면, @Autowired를 생략할 수 있습니다.

 

 

728x90
반응형