bean: 4개의 글
Spring Annotation인 @Component와 @Bean의 차이에 대해 알아보자. 차이점 @Bean public ObjectMapper objectMapper(){ return new ObjectMapper(); } @Component public class CustomMapper{ ... } @Bean의 경우 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용된다. 예를 들면 ObjectMapper의 경우 ObjectMapper Class에 @Component를 선언할 수 없으니 ObjectMapper의 인스턴스를 생성하는 메소드를 만들고 해당 메소드에 @Bean을 선언하여 Bean으로 등록한다. 반면 개발자가 직접 컨트롤이 가능한 Class들의 경우엔 @Co..
[Spring] @Autowired의 다양한 사용 방법 - required, Primary, Qualifier 1. 의존객체 타입의 빈이 없는 경우 다음과 같이 BookService 클래스와 BookRepository 인터페이스가 있다. import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class BookService { BookRepository bookRepository; @Autowired public BookService(BookRepository bookRepository) { this.bookRepository = boo..
[Spring] 왜 자바 객체를 IoC 컨테이너의 빈으로 만들까? IoC는 spring을 통해서만 적용할 수 있는게 아니며 일반 자바 객체로 DI를 직접 구현할수도 있다. 그런데도 spring의 IoC 컨테이너를 사용하는 이유는 다음과 같다. DI(Dependency Injection, 의존성 주입) DI를 직접 구현하는 것 보다 spring에서 제공하는 IoC 컨테이너의 DI를 이용하는 것이 편리하고 효율적이다. 객체의 Scope 자바 객체를 IoC 컨테이너의 빈으로 만들면 객체의 scope를 관리하기 용이하다. IoC 컨테이너에서 관리되는 빈들은 기본적으로 싱글톤 scope로 등록된다. 따라서 어플리케이션 전반적으로 오로지 하나의 인스턴스만 사용해도 되는 객체라면 IoC 컨테이너에 빈으로 등록해서 아..
[Spring] 스프링 빈(Bean)의 개념과 생성 원리 빈(Bean) Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라는 용어로 부른다. 우리가 new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아니다. ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다. 즉 Spring에서의 빈은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미한다. 어떻게 Spring IoC 컨테이너에 빈을 등록할까? 빈을 만드는 방법은 다양하지만 기본적으로 크게 두가지 방법이 있다. ① Component Scanning ② 빈 설정파일에 직접 빈을 등록 Component Scan @Comp..