@RequiredArgsConstructor와 @Autowired의 공통점 차이점

ILCHAN AHN·2023년 2월 16일
0

@RequiredArgsConstructor는 Lombok이 제공하는 애노테이션으로, final이나 @NonNull으로 선언된 필드를 가지는 클래스의 생성자를 자동으로 생성해주는 기능을 제공합니다. 이 애노테이션은 생성자 코드를 간단하게 작성할 수 있도록 도와주며, 객체 생성 시 필요한 매개변수를 자동으로 주입할 때 사용됩니다.

@Autowired는 스프링 프레임워크에서 사용되는 어노테이션으로, 스프링 컨테이너에 등록된 빈 객체를 필드나 생성자, 메서드에 자동으로 주입할 때 사용됩니다. @Autowired를 사용하면, 스프링이 자동으로 해당 클래스나 인터페이스의 구현체를 찾아서 주입해줍니다.

이 두 어노테이션의 공통점은, 객체를 생성하거나 주입할 때 코드의 중복을 줄일 수 있다는 점입니다. @RequiredArgsConstructor는 생성자 코드를 자동으로 생성해주기 때문에, 코드의 중복을 줄여줍니다. @Autowired는 스프링이 자동으로 빈 객체를 주입해주기 때문에, 객체를 생성하고 주입하는 코드를 직접 작성하지 않아도 되므로 코드의 중복을 줄여줍니다.

하지만 두 어노테이션의 차이점은, 사용되는 시점과 용도입니다. @RequiredArgsConstructor는 클래스의 생성자를 자동으로 생성해줍니다. @Autowired는 스프링이 자동으로 빈 객체를 주입해주는 기능을 제공합니다. 따라서, @RequiredArgsConstructor는 객체 생성 시 필요한 매개변수를 자동으로 주입할 때 사용되며, @Autowired는 스프링이 관리하는 빈 객체를 자동으로 주입할 때 사용됩니다.

배울때는 @Autowired를 많이 보았지만, 실제 스프링 프로젝트에서는 @RequiredArgsConstructor를 통해 final로 주입하는 케이스가 많은 것 같아서 찾게 되었다.

profile
백엔드 개발자를 꿈꿉니다

0개의 댓글