Spring Ch 1. IoC 컨테이너(2) - Component와 Autowired


Component

  • Component-scan에 의해 Bean으로 등록되는 개발자가 직접 작성한 클래스.
  • @Controller, @Service, @Repository는 @Component를 확장한 annotation이며 이러한 Annotation이 등록된 컴포넌트들은 컨테이너에 의해 의존성이 주입된다.
  • ComponentScan에는 아래와 같이 다양한 설정들이 있다.

basePackages

  • 기본적으로 컴포넌트 스캔은 basePackage로 등록된 클래스를 기준으로 하여 작동한다.
  • 컴포넌트 스캔은 등록된 클래스가 존재하는 폴더부터 하위폴더로 진행되므로 상위 폴더에 대해서는 스캔 되지 않는다.
  • basePackage의 기본값은 component-scan을 사용하는 configuration 설정 파일의 폴더.
자세히 보기

Spring Ch 1. IoC 컨테이너(1) - 빈과 IoC


Dependency

  • 하나의 객체가 다른 객체를 변수로 가지고 있거나 파라미터로 전달, 혹은 메소드를 호출하는 것을 ‘의존한다’라고 표현한다.
  • 객체 A가 객체 B를 의존하고자 할 때 객체를 직접 선언하여 사용하나, 만약 객체 A가 객체 B 대신 객체 C를 사용하는 객체로 사용하기 위해서는 C에 의존하고 객체 A와 비슷한 객체 D를 선언해야 한다.

Dependency Inversion Principle

  • 의존하는 객체는 재사용할 수 없다. 객체를 재사용하기 위해서는 의존성을 제거하여야 한다.
  • 의존 대상이 되는 객체를 추상화하여 의존성을 제거할 수 있다. 이를 의존성 역전 원리(Dependency Inversion Principle)라고 한다.
자세히 보기