DI

윤주헌's avatar
Sep 02, 2024
DI
notion image
원리는 생성자 주입
 
테스트 코드
notion image
왜 오토 와이어드 안됨??
 
위에 IOC가 관리 해야지 가능함
@Component를 가지고 있어야 한다
notion image
notion image
notion image

생성자 int n, 생성자 빈거 이거 설명 필요

 
어디서 못찾는다? IOC에서 DI는 생성자 주입이
 
메타 어노테이션이라고 한다 → 자바로 치면 상속
부모 어노테이션에 Component가 있어야 가능하다
💡
스프링이 컴포넌트 스캔을 통해 자동으로 빈으로 등록합니다.
 
이름을 구분해 둔다
 
기본 원리는 생성자 주입
 
바구니 가지고 있는데 과일들이 많아 5가지 있는데 바나나 사과에만 componet만 붙어 있어서 들고있음 이게 IOC컨테이너
만약에 딸기에도 componet붙어 있어 근데 사과가 있어야 들고 갈 수 있어 이런게 DI다
 
DI하면 오토와이어드 안 해도 됨
 
만약 디폴트 생성자가 있다면 DI는 안됨
new 될 때 필요한것 들거가는 것 → 의존성 주입
 
실수할 수 있으니까
final붙인다 (필드로서 초기화 되지 않는 상태로 존재할 수 없다) 즉 상수다(중간에 setter할 수 없다)
write메모리 잠기고 read만 가능하게 만든다
private final Hello hello
 
final 안 넣으면 null이라는 거임
반드시
public IndexController(Hello hello){
this.hello = hello;
}
이거를 적게 만들어 준다!!!!
 
new할 때 무조건 디폴트 생성자를 때리는데 없으면 다른 거
@RequiredArgsConstructor
💡
자동으로 상수를 초기화 시켜준다

최종

 
@RequireArgsConstructor
💡
파이널 붙은 애들 생성자 만들어줘
 
왜 좋은가?
  1. 필요하면 계속 @Autowired 적어줘야 한다(코드 지저분해진다) 생성자 주입하려고 DI 만들었다 그러면 맴버변수 적고 생성자 추가만 해주면 된다 추가 삭제가 편함 만약 필요없다하면 final만 지운면 되니까 (의존성 주입 없앤다)
 
Share article

code-sudal