backend/springboot

99클럽 코테 스터디 1일차 TIL - springboot 의존성 주입

ssoheeh 2024. 4. 1. 22:59

의존성 주입

스프링 컨테이너에서 객체 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) 학습 예정 : 백트래킹 알고리즘, 스프링부트 프로젝트 강의 듣기