[Spring] 강의 기록하기

ggam-nyang·2022년 4월 9일
0

스프링 프레임워크 핵심 기술

강의 기록

IOC 1부

Bean이란 IoC 컨테이너가 관리하는 객체
Bean으로 등록하는 이유는?

  • 의존성 주입을 하기 위해, 또 받기 위해 (의존성 관리)
  • 빈의 Scope 때문.
    • 싱글톤 관리 (빈에 등록될 때 기본적으로 싱글톤 Scope으로 등록됨)
    • 프로토타입 ( 매번 다른 객체로 등록)
  • 라이프 사이클 인터페이스
    • ex. 객체 생성 때 뭔가 실행 (@PostConstruct)

IOC 2부

Bean은 어떻게 등록하는가?

  1. xml 파일에 하나하나 등록 (불편)
  2. bean-scanning을 xml에 등록해서 context를 scan 하기 (@Component + @Autowired)
  3. xml -> 자바 파일로 바꾸자! @Configuration에 Bean을 등록
  4. 마찬가지로 @ComponentScan 으로 스캔 기능 추가
  5. 그 자바 파일도 없애서, @SpringBootApplication을 붙이면, 그 파일 역할을 해줌 (Spring boot)

IOC 3부

@Autowired

Bean에 등록하고 DI를 하는 방법
1. 생성자로 받는다. (@Autowired, Bean 등록하면 문제없음)
2. setter로 받는다.

  • bookRepository가 bean이 아니어도, 생성이 가능해야하지만
    @autowired가 있으면 실패함. (required = false 하면 실행가능)
  • bookRepository implement가 두개라면?
    => Error (어떤건지 알 수 없음)
    => 3가지 action 가능 (@Primary, Qulifier, 모두 주입받기)
    ++ specificBookRepository라고 이름을 명시하면 이름이 같은걸 주입해주긴 함 (비추)

Bean 라이프사이클
@BeanPostProcessor (Bean 등록 이후 작업을 처리해주는?)
새로 만든 빈 인스턴스를 수정할 수 있는 라이프사이클 인터페이스

AutowiredAnnotationBeanPostProcessor​ extends BeanPostProcessor
스프링이 제공하는 @Autowired와 @Value 애노테이션 그리고 JSR-330의 @Inject 애노테이션을 지원하는 애노테이션 처리기

결국 스프링은 추상화의 산물이고, 현재 단계의 스프링을 이해하기 위해선 추상화의 역사를 알아야한다.
@Autowired는 해당 class가 빈으로 등록되어 있는지 확인하고, 자동으로 주입을 해준다.
이를 위해선 Bean으로 먼저 등록이 되어야하고
빈 등록은 xml or @Configuration 작성 => @Component 스캔으로 빈 등록을 하고
등록된 빈은, 자동 주입이 가능하다!

profile
개발 꿈나무

0개의 댓글