-
@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