BE/Spring

의존성 주입

잠수함 2021. 6. 8. 23:50
728x90

 

# 스프링 의존성 관리 방법

- 스프링 프레임워크의 가장 중요한 특징은 객체의 생성과 의존관계를 컨테이너가 자동으로 관리한다는 점

 

* Dependency lookup

- 컨테이너가 애플리케이션 운용에 필요한 객체를 생성하고 클라이언트는 컨테이너가 생성한 객체를 검색하여 사용하는 방식

(실제 개발과정에서 사용X)

 

* Dependency Injection

- 객체 사이의 의존관계를 스프링 설정 파일에 등록된 정보를 바탕으로 컨테이너가 자동으로 처리해줌

- 따라서 의존성 설정을 바꾸고 싶을 때 프로그램 코드를 수정하지 않고 스프링 설정 파일 수정만으로 변경사항을 적용할 수 있어서 유지보수 향상됨

- 컨테이너가 직접 객체들 사이에 의존관계를 처리하는 것을 의미

 

# 의존성 관계

- 객체와 객체의 결합 관계

- 하나의 객체에서 다른 객체의 변수나 메소드를 이용해야 한다면 이용하려는 객체에 대한 객체 생성과 생성된 객체의 레퍼런스 정보가 필요

 

# 생성자 인젝션 이용

- 스프링 컨티에너는 XML설정 파일에 등록된 클래스를 찾아서 객체 생성할 때 기본적으로 매개변수가 없는 기본 생성자를 호출함

- 생성자 인젝션을 통해서는 기본 생성자가 아닌 매개변수를 가지는 다른 생성자를 호출하도록 설정할 수 있음

- 스프링 컨테이너는 기본적으로 bean 등록된 순서대로 객체를 생성하며, 모든 객체는 기본 생성자 호출을 원칙으로 함

- 생성자가 여러 개 오버로딩 되어있다면 index 속성을 통해서 어떤 값이 몇 번째 매개변수로 매핑되는지 지정가능 (index는 0부터 시작)

 

# Setter 인젝션 이용

- setter method를 호출하여 의존성 주입을 처리하는 방법

- 생성자 인젝션과 결과는 같지만 대부분은 setter 인젝션을 사용하며, setter 메소드가 제공되지 않는 클래스에 대해서만 생성자 인젝션을 사용

- setter 메소드는 스프링 컨테이너가 자동으로 호출, 호출 시점은 <bean> 객체 생성 직후.

- .xml 에서 bean이 아닌 property 엘리먼트 사용/ name속성값이 호출하고자 하는 메소드 이름.

 

# 컬렉션 객체 설정

컬렉션 유형 엘리먼트
java.util.List 배열 <List>
java.util.Set <set>
java.util.Map <map>
java.util.Properties <props>

 

'BE > Spring' 카테고리의 다른 글

Spring annotation  (0) 2021.07.02
Spring xml  (0) 2021.07.02
Spring container  (0) 2021.07.02
spring basic #1  (0) 2021.07.01
스프링이란?  (0) 2021.02.18