본문 바로가기

728x90

Spring

(26)
@Autowired와 @Qualifier, @Primary 아래 포스팅에서 @Autowired의 사용법에 대해서 살펴보았습니다. @Autowired로 의존관계 주입하기 앞 포스팅(@ComponentScan으로 스프링 빈 스캔하기)에서 @Component와 @ComponentScan을 이용하여 스프링 빈을 스프링 컨테이너에 등록하였습니다. 이제는 @Autowired를 이용하여 의존관계를 자동으로 주입할 silver-programmer.tistory.com 위 포스팅에서도 언급했듯이, @Autowired는 타입(Type)으로 빈을 조회합니다. 이때, 특정 타입의 빈 클래스 (위 포스팅에서는 Product 인터페이스)를 상속하는 자식들이 여러 개 있고, 그 자식들도 스프링 빈으로 등록되어 있을 때, 자식들은 부모 타입이므로 부모 타입으로 빈을 조회하면 빈이 2개 이상..
@Configuration + @Bean vs @Component 결론 외부 라이브러리를 사용해야 할 때는 우리가 직접 @Component를 그 라이브러리에 선언할 수 없으므로, @Configuration + @Bean 조합으로 스프링 빈을 생성하고, 그 외에 우리가 직접 제어할 수 있는 클래스들은 @Component를 붙임으로써 자동으로 스프링 빈으로 등록되도록 하자. 참고하면 좋은 글: [Spring] 빈 등록을 위한 어노테이션 @Bean, @Configuration, @Component 차이 및 비교 - (1/2) - MangKyu's Diary (tistory.com) [참고자료] https://stackoverflow.com/questions/67691575/when-should-you-use-configuration-instead-of-service-cont..
@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 = ..
@ComponentScan으로 스프링 빈 스캔하기 앞의 포스팅까지는 @Configuration과 @Bean을 이용하여 아래와 같이 자바 설정 정보에 등록할 스프링 빈을 직접 만들어 스프링 컨테이너에 빈을 등록하였습니다. @Configuration public class AutoAppConfig { @Bean Product getBook(){ return new Book(); } @Bean Order getOrder(){ return new OnlineOrder(getBook()); } } [Book, OnlineOrder 클래스] 더보기 public interface Order {} public class OnlineOrder implements Order { Product product; public OnlineOrder(Product product)..
빈(Bean)을 조회하는 다양한 방법 아래 포스팅에서 스프링 빈을 직접 조회하는 방법에 대해서 알아봤습니다. 아래 포스팅에서는 이름을 통해 빈을 찾았다면 이번 포스팅에서는 빈을 조회하는 다른 여러 가지 방법에 대해서 코드로 작성해 보았습니다. https://silver-programmer.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EC%99%80-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B9%88Bean 스프링 컨테이너와 스프링 빈(Bean) 스프링 컨테이너란, 스프링 빈(Bean)을 저장하고 관리하는 저장소입니다. 스프링 빈(Bean)은 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트입니다. 즉, 스프..
스프링 컨테이너와 스프링 빈(Bean) 스프링 컨테이너란, 스프링 빈(Bean)을 저장하고 관리하는 저장소입니다. 스프링 빈(Bean)은 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트입니다. 즉, 스프링 컨테이너가 관리하는 자바 객체를 뜻하며, 하나 이상의 빈(Bean)을 관리한다. 빈은 인스턴스화된 객체를 의미하며, 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 합니다. 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 합니다. 이 구성 정보는 XML을 기반으로 만들 수 있고, 자바 에너테이션 기반의 자바 설정 클래스로도 만들 수 있습니다. (이 외에도 Groovy, json 등 다양한 형식의 파일도 가능합니다.) 이번 포스팅은 이 2가지 방법을 사용하여 스프링 컨테이너와 빈을 생성하는 방법에 대해서 작성하였습니다..
스프링 부트: Spring Initializr 예제 프로젝트 생성 이번 포스팅은 Spring Initializr을 이용하여 쉽게 스프링 부트 예제 프로젝트를 생성하는 법에 대해서 작성하였습니다. 1. Spring Initializr로 프로젝트 구성하기 위 사이트로 들어가 프로젝트의 구성을 원하는 대로 설정하여 다운로드하면 쉽게 Spring Boot 프로젝트 생성이 가능합니다. 저는 아래와 같이 구성한 후, Generate 버튼을 눌러 프로젝트를 생성하였습니다. Project: Gradle Language: Java 17 Spring Boot: 3.2.0 (SNAPSHOT이나 M 버전 같은 것들은 아직 완전히 개발되지 않은 것들이라 보시면 됩니다.) Project Metadata Group: hello Artifact: core (Artifact을 수정하면 Name 속성..

728x90
반응형