인프런 커뮤니티 질문&답변

열심이님의 프로필 이미지
열심이

작성한 질문수

신입 프로그래머를 위한 자바 스프링 (Spring) 프레임워크 강좌

4강 - DI(Dependency Injection) (2)

@Autowired

작성

·

310

0

@AUtowired에 대해 묻고 싶은데요 어떻게 사용하는지요.....

답변 2

1

열심이님의 프로필 이미지
열심이
질문자

좋은 답변 감사합니다!! 혹시 spring 관련해서 좋은 책을 추천해 주실수 있는지요?

0

Spring Framework를 사용할 때 JavaConfig를 사용한다면, 아래와 같이 @Configuration 애노테이션으로 태깅된 클래스에, @Bean 애노테이션을 사용해서 스프링 빈을 정의할 것입니다.
@Configuration
public class BeanConfigurationClass {

  @Bean
  public SomeBeanType someBeanName() {
    return new SomeBean();
  }

}
혹은 스프링 빈을 선언할 때, 아래와 같이 클래스에다가 컴포넌트로 선언할 때도 있습니다.
@Component
public class SomeComponentClass {
  // ...
}
그러면 이제, 위에서 선언했던 SomeBeanType, SomeComponentClass 타입의 스프링 빈을 참조해서 사용하고 싶은 컴포넌트가 있을 것입니다. 스프링 프레임워크의 의존성 주입(Dependency Injection)을 이용할 때 @Autowired가 사용됩니다.
@Component
public class 빈을가져다쓰고싶은컴포넌트클래스 {
  
  @Autowired
  private SomeBeanType someBeanType;
  
  @Autowired
  private SomeComponentClass someComponentClass;
  
}
이렇게 하면, 애플리케이션이 실행될 때, 스프링 컨테이너가 @Autowired 애노테이션이 붙은 필드에 빈을 주입해줍니다. 이때 @Autowired는 스프링 컨테이너가 갖고 있는 스프링 빈 목록 중에서 "타입이 같은" 빈을 찾습니다. 예를 들어, 전체 애플리케이션을 통틀어 SomeBeanType, SomeComponentClass가 유일하게 정의되어 있어야 합니다. 만약 중복 정의되면, 어떤 빈을 주입할지 몰라서 에러가 납니다. 만약 같은 타입으로 여러 개의 빈을 선언하려면, 빈 정의 각각에 이름을 붙여주고, @Autowired 할 때 이름을 같이 적어줘야 합니다.
열심이님의 프로필 이미지
열심이

작성한 질문수

질문하기