의존성 주입
스프링 컨테이너에서 객체 Bean을 먼저 생성해두고 생성한 객체를 지정한 객체에 주입하는 방식
1. 필드 주입
public class MemberService {
@Autowired
MemberRepository memberRepository;
...
}
- 외부에서 접근 불가능
- 필드의 객체 수정 불가능
-> 권장되지 않음 (왠만하면 사용하지 말자)
2. 생성자 주입
public class MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
...
}
- 권장되는 방법
- 변경 불가능한 안전한 객체 생성 가능
- 생성자가 하나면 @Autowired 생략 가능
- final 키워드 추가 -> 컴파일 시점에 memberRepository 설정하지 않는 오류 체크 가능
3. lombok 사용
@RequiredArgsConstructor //final 변수 생성자 생성
public class MemberService {
private final MemberRepository memberRepository;
...
}
스프링 데이터 JPA를 사용하면 EntityManager 주입 가능
오늘의 회고
- 스프링부트 프로젝트를 만들 때 가장 헷갈렸던 것 중 하나인 의존성 주입에 대해 구분할 수 있게 되었다
- 내일(4/2) 학습 예정 : 백트래킹 알고리즘, 스프링부트 프로젝트 강의 듣기
'backend > springboot' 카테고리의 다른 글
Session을 사용한 로그인 구현 (0) | 2024.04.16 |
---|---|
Cookie를 사용한 로그인 구현 (0) | 2024.04.16 |
로그인 구현 방법 세팅 (0) | 2024.04.16 |
99클럽 코테 스터디 7일차 TIL - springboot 변경 감지와 병합 (0) | 2024.04.07 |
도메인 모델 패턴, 트랜잭션 스트립트 패턴 (0) | 2024.04.04 |