학습(구)/Spring 요약

Spring - 자동 의존 주입

잉아당 2020. 10. 15. 11:44
728x90

자동 의존 주입

@Autowired 어노테이션을 사용하여 자동으로 관련된 의존 주입을 처리해주는 방식입니다.

@Autowired 어노테이션을 필드나 setter메소드에 사용하면 필드나 메소드의 인자에 Bean 객체를 사용하고 수행하며 설정객체에서 DI부분을 삭제하여 간단하게 표현이 가능합니다.

이때 설정 클래스에서는 기본 생성자를 사용하여 객체를 생성하므로 기본 생성자를 작성하여야 합니다.

기본적으로 @Autowired는 객체 타입을 통해 주입하므로 상속관계는 하나의 타입으로 인지하게 됩니다.

이때 사용하는것이 @Qualifier어노테이션입니다.

 

@Autowired 어노테이션이 사용되는 곳에 @Qualifier 어노테이션을 사용하여 식별자를 사용하고 설정 클래스에서 내가 주입하고자 하는 클래스를 @Qualifier어노테이션을 지정해 구분할 수 있습니다.

식별자를 따로 지정하지 않을 경우 필드나 메소드의 이름이 식별자가 됩니다.

 

자동 의존 주입시 의존 객체가 없다면 nullPointerException이 발생하게 됩니다.

이를 대비한 3가지 방법이 있습니다.

 

1. @Autowierd의 속성값을 require=False로 지정하여 해당 객체가 필수가 아니라는 것을 명시적으로 지정하는 방법으로 Bean객체가 없다면 해당 메소드는 실행되지 않습니다.

2. Optional<Bean객체타입>을 사용하는 방법입니다. optional객체의 isPresent메소드를 사용하여 유무를 확인하고 get()을 통해 객체를 얻고 존재 하지 않으면 null을 가진 Optional 객체를 얻습니다.

3. @Autowired어노테이션 사용시 @Nullalble 어노테이션을 사용할 경우 Bean객체가 존재하지 않을 때 null을 할당하게 되고 메소드는 실행이 됩니다.

 

의존 주입시 순서는 명시적으로 작성한것이 수선이되고 그 다음이 자동 의존주입이 됩니다.