@Autowired (5) 썸네일형 리스트형 @Autowired와 Collection 클래스(List, Map, etc.) 아래 포스팅에서 동일 타입의 빈들이 충돌할 때 어떻게 해결할 수 있는지 확인했습니다. 이번 포스팅은 의도적으로 해당 타입의 스프링 빈이 다 필요한 경우, 특히 동적으로 동일 타입의 스프링 빈이 선택되는 경우에는 어떻게 해결할 수 있을지 작성하였습니다. 이 경우에는 자바의 Collection 클래스를 이용하여 동일 타입의 모든 빈들을 저장할 수 있습니다. 코드를 통해 확인해 보겠습니다. // Product 인터페이스 public interface Product { int discount(); } // Product 상속(구현)하는 Computer 클래스 @Component public class Computer implements Product{ @Override public int discount() {.. @Autowired와 @Qualifier, @Primary 아래 포스팅에서 @Autowired의 사용법에 대해서 살펴보았습니다. @Autowired로 의존관계 주입하기 앞 포스팅(@ComponentScan으로 스프링 빈 스캔하기)에서 @Component와 @ComponentScan을 이용하여 스프링 빈을 스프링 컨테이너에 등록하였습니다. 이제는 @Autowired를 이용하여 의존관계를 자동으로 주입할 silver-programmer.tistory.com 위 포스팅에서도 언급했듯이, @Autowired는 타입(Type)으로 빈을 조회합니다. 이때, 특정 타입의 빈 클래스 (위 포스팅에서는 Product 인터페이스)를 상속하는 자식들이 여러 개 있고, 그 자식들도 스프링 빈으로 등록되어 있을 때, 자식들은 부모 타입이므로 부모 타입으로 빈을 조회하면 빈이 2개 이상.. @Autowired required 옵션 주입할 스프링 빈이 없어도 애플리케이션이 동작해야 할 때가 있습니다. @Autowired는 required 옵션의 기본값이 true로 되어 있어서 자동 주입 대상이 없으면 오류가 발생합니다. 이번 포스팅은 자동 주입 대상을 옵션으로 처리하는 방법을 통해 오류가 발생하지 않도록 하는 방법에 대해서 작성하였습니다. 자동 주입 대상을 옵션으로 처리하는 방법은 아래와 같습니다. @Autowired(required=false): 자동 주입할 대상이 없으면 @Autowired가 선언된 메서드 자체가 호출되지 않습니다. org.springframwork.lang.@Nullable: 자동 주입할 대상이 없으면 null이 입력됩니다. Optional : 자동 주입할 대상이 없으면 Optional.empty가 입력됩니다... 다양한 의존관계 주입 방법 (@Autowired) 스프링 빈끼리의 의존관계 주입은 크게 4가지 방법이 있습니다. 생성자 주입 수정자 주입(Setter 주입) 필드 주입 일반 메서드 주입 이번 포스팅은 각각을 이용하여 의존관계를 주입하는 방법에 대해서 알아보겠습니다. 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입받는 방법입니다. 생성자 호출시점에 딱 한 번만 호출되는 것이 보장됩니다. 불변, 필수 의존관계에 사용됩니다. 아래 코드처럼 생성자 위에 @Autowired를 붙여서 의존관계를 주입하면 됩니다. @Component public class OnlineOrder implements Order { Product product; @Autowired public OnlineOrder(Product product) { this.product = .. @Autowired로 의존관계 주입하기 앞 포스팅(@ComponentScan으로 스프링 빈 스캔하기)에서 @Component와 @ComponentScan을 이용하여 스프링 빈을 스프링 컨테이너에 등록하였습니다. 이제는 @Autowired를 이용하여 의존관계를 자동으로 주입할 수 있도록 해보겠습니다. @Autowired로는 여러가지 방법으로 의존관계를 주입할 수 있는데, 우선은 가장 기본적이고 많이 사용하는 방법인 생성자를 통해 주입해보도록 하겠습니다. @Autowired 생성자 주입 1. 스프링 빈 생성하기 먼저 @Component를 이용해 원하는 스프링 빈을 생성하겠습니다. (물론 @ComponentScan도 적절한 위치에 정의가 되어 있어야겠습니다. ) @Component public class Book implements Product{.. 이전 1 다음