<aside> 😊 Annotation을 사용하는 Bean 등록, 주입에 대해 정리한 페이지입니다 :)

</aside>

XML을 이용한 빈 등록

<bean id = "aaa" class = "xxx.yyy.zzz.AAA">
    <property name = "prop"></property>
</bean>

XML 문제점

Annotation을 이용한 빈 등록

@Component 컴포넌트를 나타내는 일반적인 스테리오 타입으로 태그와 동일한 역할을 함
@Repository 퍼시스턴스 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스
@Service 서비스 레이어, 비지니스 로직을 가진 클래스
@Controller 프리젠테이션 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스
@Repository @Service @Controller는 더 특정한 유즈케이스 대한 @Component의 구체화 된 형태

빈 의존관계 주입 Annotation

@Autowired 정밀한 의존관계 주입이 필요한 경우에 유용. @Autowired는 프로퍼티, setter 메서드, 생성자, 일반 메서드에 적용 가능. 의존하는 객체를 주입할 때 주로 Type 이용
@Resource 어플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용 @Resource는 poperty, setter 메서드에 적용 가능 의존하는 객체를 주입할 때 주로 Name을 이용
@Value 단순한 값을 주입할 때 사용되는 annotation. @Value(“Spring”)와 동일한 역할
@Qualifier @Qualifier는 @Autowired annotation과 같이 사용. @Autowired는 타입으로 찾아서 주입하므로, 동일 타입의 Bean 객체가 여러 개 존재할 때 특정 Bean을 찾기 위해 사용
- @Component를 통해 자동으로 Bean을 등록
- @Autowired로 의존관계를 주입받는 어노테이션을 클래스에 선언하여 사용했을 경우 해당 
	클래스가 위치한 특정 패키지를 Scan하기 위한 설정을 XML에 해야함

자바 코드로 빈 등록

@Configuration
public class ConfigurationBeanFactory {

    @Bean
    public CarInfoProvider kiaCar() {
        return new KiaCar();
    }

    @Bean
    public CarInfoProvider hyendaiCar() {
        return new HyundaiCar();
    }

}

나머지 종류