# 1. 의존성 주입하기
(1) 의존성 주입(DI, Dependency Injection)이란?
- 클래스의 연관 관계를 개발자가 직접 코딩을 통해 컴포넌트(클래스)에 부여하는 것이 아니라 컨테이너가 연관 관계를 직접 규정하는 것
- 코드에서 직접적인 연관 관계가 발생하지 않으므로 각 클래스들의 변경이 자유로워짐.
(2) 의존성 주입을 해야하는 이유
- 기존의 자바 코드 구현의 문제점 : 자바 코드에서 직접 객체를 생성하는 것(tightly coupled)은 복잡한 문제를 일으킴. 다른 클래스의 변경 사항이 연속적으로 다른 부분에 영향을 미치는 것은 좋은 방법이 아님.
- 장점
- 클래스들 간의 의존관계 최소화 -> 코드 단순화
- 유지 및 관리가 쉬워짐
- 기존 구현 방법은 개발자가 직접 코드 안에서 객체의 생성과 소멸을 제어했지만, 의존성 주입은 객체의 생성, 소멸과 객체 간의 의존 관계를 컨테이너가 제어 => 제어의 역전(IoC, Inversion of Control)
(3) 스프링의 의존성 주입 방법
- 생성자에 의한 주입
- setter에 의한 주입
# 2. 의존성 주입 실습하기
(1) 주입하는 방법
- XML 파일 생성
- JAVA에서 xml 파일을 읽어 들여 빈 생성
cf) XML이란?
- XML(eXtensive Markup Language); 다른 마크업 언어를 만드는데 사용되는 다목적 마크업 언어
- XML 이용하기; DTD, XML 스키마(XSD)
- DTD란? (Document Type Definition) XML 문서의 구조 및 해당 문서에서 사용할 수 있는 적법한 요소와 속성을 정의합니다. DTD는 엔티티를 정의할 수 있으며, 빠른 개발을 위한 내부 DTD를 사용할 수 있습니다.
- DTD 문법: <!DOCTYPE 루트요소 DTD식별자 [ 선언1 선언2 ... ]>
(2) setter를 이용한 주입
...더보기
1. xml을 이용한 의존성 주입 - setter
2. 자바 코드에서 빈 사용
(3) 생성자를 이용한 주입
(4) <bean> 태그에 사용되는 여러가지 속성들
속성이름 | 설명 |
id | 빈 객체의 고유 이름으로, 빈 id를 이용해 빈에 접근합니다. |
name | 객체의 별칭입니다 |
class | 생성할 클래스입니다. 패키지 이름까지 입력해야 합니다. |
constructor-arg | 생성자를 이용해 값을 주입할 때 사용합니다. |
property | setter를 이용해 값을 주입할 때 사용합니다. |
lazy-init |
|
References
- 자바 웹을 다루는 기술
- DTD 개요, link
'Web > Spring' 카테고리의 다른 글
[ Spring ] ⑥ 스프링 애너테이션 기능 (0) | 2019.08.12 |
---|---|
[ Spring ] ⑤ 스프링 JDBC 기능 (0) | 2019.08.02 |
[ Spring ] ④ 스프링 MVC 기능 (0) | 2019.08.01 |
[ Spring ] ③ AOP (0) | 2019.08.01 |
[ Spring ] ① Spring Framework 시작하기 (0) | 2019.08.01 |