엽기토끼이요
619
2020-10-13 13:57:17
2
150

스프링 부트에서 컨스트럭터 인젝션은 누가해주는건가요?


아래는 JpaRepositoryImpl의 일부 입니다.

public SimpleJpaRepository(JpaEntityInformation<T, ?> entityInformation, EntityManager entityManager) {

Assert.notNull(entityInformation, "JpaEntityInformation must not be null!");
Assert.notNull(entityManager, "EntityManager must not be null!");

this.entityInformation = entityInformation;
this.em = entityManager;
this.provider = PersistenceProvider.fromEntityManager(entityManager);
}


컨스트럭터 인젝션 해주는데 저것을 누가 주입해주는건가요?

제가 코드에 명시하지 않아도 이미 빈으로 만들어져 있으면 같은 이름을 가져다 쓰는 것인가요?

그렇다면 제가 빈 생성시점이 언제인지를 공부해야 할 까요?

필드 인젝션 버리고 컨스터럭터 인젝션으로 가려는데 작동원리가 너무 궁금합니다.

검색 키워드만 알려주셔도 감사하겠습니다. 

0
  • 답변 2

  • John Suhr
    4k
    2020-10-13 18:46:17

    AutowiredAnnotationBeanPostProcessor가 담당합니다. 생성자 인젝션은 필드 인젝션과 동일한 방식이나 인젝션 시점만 다른 것 같습니다. 소스 코드가 상당히 어려우니 유의하세요 ㅎㅎ

  • 엽기토끼이요
    619
    2020-10-14 09:50:36

    매우 감사합니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.