답변 2
1
0
@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 할 때 이름을 같이 적어줘야 합니다.