DI: 3개의 글
스프링을 처음 사용하면 @Autowired, @Component, @Controller 등 다양한 어노테이션을 사용해야한다. 그런데 이 어노테이션들이 정확히 어떤 역할을 하는지 모르고 일단 사용하는 경우가 많이 있다. 오늘은 스프링 빈을 등록하는 2가지 방법을 알아보도록 하자. 1. 컴포넌트 스캔과 자동 의존관계 설정 -> 컴포넌트 스캔의 원리는 기본적으로 @Component 어노테이션이 있으면 자동으로 스프링 빈으로 등록된다. 참고로, @Component 어노테이션은 @Controller , @Service, @Repository를 포함한다. -Controller @Controller public class MemberController { private final MemberService member..
[Spring] 왜 자바 객체를 IoC 컨테이너의 빈으로 만들까? IoC는 spring을 통해서만 적용할 수 있는게 아니며 일반 자바 객체로 DI를 직접 구현할수도 있다. 그런데도 spring의 IoC 컨테이너를 사용하는 이유는 다음과 같다. DI(Dependency Injection, 의존성 주입) DI를 직접 구현하는 것 보다 spring에서 제공하는 IoC 컨테이너의 DI를 이용하는 것이 편리하고 효율적이다. 객체의 Scope 자바 객체를 IoC 컨테이너의 빈으로 만들면 객체의 scope를 관리하기 용이하다. IoC 컨테이너에서 관리되는 빈들은 기본적으로 싱글톤 scope로 등록된다. 따라서 어플리케이션 전반적으로 오로지 하나의 인스턴스만 사용해도 되는 객체라면 IoC 컨테이너에 빈으로 등록해서 아..
[Spring] 의존성 주입(DI, Dependency Injection)의 세가지 방법 Spring은 @Autowired 애노테이션을 이용한 다양한 의존성 주입 방법을 제공한다. @Autowired 애노테이션은 Spring에게 의존성을 주입하라는 지시자 역할로 쓰이는데 생성자, 필드, 세터에 붙일 수 있다. 🚨 Spring IoC 컨테이너에 의한 의존성 주입은 빈(Bean) 끼리만 가능하다. 1. 생성자 주입 @Component public class SampleController { private SampleRepository sampleRepository; @Autowired public SampleController(SampleRepository sampleRepository) { this.sam..