• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

학습 내용과 번외로 의존관계 주입 시 궁금증

24.03.29 16:03 작성 24.03.29 16:08 수정 조회수 105

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
1. 의존관계 주입 방법

@Configuration 
public class HelloConfig{ 
  
  @Autowired 
  private DataSource dataSource; 
  
  @Bean 
  public PlatformTransactionManager txManager(){ 
    return new DataSourceTransactionManager(dataSource); 
  } 

} 

 

 

2. 의존관계 주입 방법

@Configuration
public class HelloConfig{ 
  
  @Bean 
  public PlatformTransactionManager txManager(DataSource dataSource){ 
     return new DataSourceTransactionManager(dataSource);
  }
 
}

 

  • 안녕하세요 의존관계 주입 연습 도중 궁금한 점이 생겨 올렸습니다 !

 

  • 보통 1번방법으로 스프링 부트에서 자동으로 등록해준 히카리 커넥션 풀 DataSource 구현체를 dataSource 변수에 의존관계 주입(@Autowired) 받았었습니다

 

  • 그런데 2번 방법으로 시도해보니까 자동으로 dataSource 변수에 의존관계 주입이 되어서 DataSourceTransactionManager 객체가 정상적으로 빈으로 등록되는 것을 확인할 수 있었습니다.

 

  • @Autowired가 있지도 않았는데 이것이 가능한 원리가 무엇인지 궁금합니다 !

 

답변 1

답변을 작성해보세요.

1

David님의 프로필

David

2024.03.30

안녕하세요. dionisos198님, 공식 서포터즈 David입니다.

@Bean의 경우, 메서드 파리미터의 타입을 가진 빈이 존재하는지 확인한 후 자동으로 주입해 주도록 동작합니다. 따라서, DataSource datasource를 파라미터로 작성해 놓았다면 스프링 빈 중 datasource에 대한 걸 찾아와서 주입하게 됩니다.

감사합니다.

경민님의 프로필

경민

질문자

2024.03.30

감사합니다