# 스프링 의존성 관리 방법
- 스프링 프레임워크의 가장 중요한 특징은 객체의 생성과 의존관계를 컨테이너가 자동으로 관리한다는 점
* 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 |