아래 내용은
인프런 Spring 강의 내용을 정리한 내용입니다.
해당 MemberService 상 스프링 빈에 등록되있는 것(ex. MemberRepository)를 Injection 받을 때 @Autowired, Lombok 두 가지 방식을 소개해드리고자 합니다.
@Autowired 활용
1. 변수 선언 시 자동 주입 적용
@Autowired
private final MemberRepository memberRepository;
- 스프링 빈으로 등록한 memberRepository를 주입받는다.
- @Autowired 단점: 테스트할 때 변경하지 못한다.
2. Setter Injection 선언
@Autowired
public void setMemberRepository(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
- 이점: Mock같은 테스트 코드를 memberRepository에 주입시켜줄 수 있다.
- 단점: 런타임 개발환경시 누가 이 memberRepository를 바꿀수 있다.
3. 생성자(Constructor) Injection 선언
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository; //final넣어야 컴파일시점에 이렇게 생성자만들어줘야함을 체크해줄수있다.
}
- 테스트 케이스 작성할 때, 생성 시점에 의존관계를 명확히 할 수 있다.
- setter처럼 변경 불가능하다.
Lombok 이용
1. @AllArgsConstructor
- 위 Constructor Injection코드를 그대로 대신 생성해준다.
@AllArgsConstructor
public class MemberService {
...
}
2. @RequiredArgsConstructor
- AllArgsConstructor기능 + final인것만 가지고 생성자를 만들어준다.
@RequiredArgsConstructor
public class MemberService {
private final MemberRepository memberRepository; //더이상 변하지 않게 하기 위해 final로 지정
}
'인프런 강의' 카테고리의 다른 글
Spring 내 테스트 내 중복 처리 방법 (0) | 2023.07.26 |
---|---|
H2 설치 & 실행 방법 (0) | 2023.07.07 |
WAS에서 화면을 랜더링?? (0) | 2023.06.30 |
WAS의 Servlet (feat. Multi Thread) (0) | 2023.06.29 |
Web Server와 WAS (0) | 2023.06.28 |