본문 바로가기
Develop/Spring˙Spring Boot

[Spring] 컴포넌트 탐색, 의존관계 주입과 서비스 로케이터

by 독서왕뼝아리 2023. 3. 7.

스프링 애플리케이션에서 빈을 등록하는 방식은 두 가지로 나눌 수 있다.

 

  • 빈으로 등록될 클래스의 물리적 위치와 무관하게, 환경설정 클래스에서 직접 하나하나 빈으로 등록하기
  • 그냥 빈의 존재를 플래그로 표시하기만 하고, 나머지는 스프링이 컴포넌트 탐색(Component Scanning)을 통해 자동으로 빈을 찾아내 등록하게 하기. 스프링 애플리케이션이 실행되면 모든 빈은 애플리케이션 컨텍스트(Application Context)에 등록된다. 

스프링 애플리케이션에서는 의존관계 주입(DI, Dependency Injection)을 사용한다.

 

 

의존관계 주입 개념이 없던 2000년대 초반에는 서비스 로케이터(Service Locator) 패턴을 사용해서 서비스를 식별 가능한 어떤 주소와 함께 등록하고, 그 주소를 통해 필요한 서비스를 찾아내고 협업하는 개념이 가장 널리 사용되었다.

마치 디스커버리 서버처럼 사용한다.

 

서비스 로케이터 패턴은 견고하지만 큰 단점이 존재한다. 상당히 정적인 애플리케이션이 만들어진다는 한계가 있다. 실제 데이터베이스 서비스를 테스트용 가짜 데이터베이스로 대체하는 작업은 매우 어려웠다. 협력하는 컴포넌트들도 다 같이 바꾸지 않는 한 가짜 데이터베이스로 대체하는 작업은 불가능했다.