본문 바로가기

스프링 프레임워크

뉴렉처[스프링 프레임워크] 1강~4강

1강 - Spring 소개와 학습 안내

 

Spring을 이용해서 Java EE(Enterprise Edition)을 대체한다.

 

따라서 Java SE 위에 Java EE를 얹지 않고 Spring을 얹어서 웹 개발을 진행한다.

 

2강 - 느슨한 결합력과 인터페이스

현재 B1에서 소스변경을 하여 B2를 새로 만들어야하는 상황일때, 

Service함수를 B2로 연결하려면 새로운 B2객체를 생성해서 연결해야하는 Service의 소스 코드를 수정해야하는

상황 발생!

어떻게 하면 소스코드를 수정하지 않고 DAO의 접근을 바꿀 수 있을까?

==> Interface를 생각해볼 수 있다.

 

B1과 B2의 소스코드는 완전히 다른 소스가 아니기에 공통적인 소스코드를 interface에 정의하고 추가되는 소스

또는 변경 되는 소스는 따로 구현하면 됨.

객체를 생성, 세팅하고 변경하는 것들을 외부에서 설정하도록 바꿔준다.

==> XML과 Annotation을 활용!

 

3강 - DI (Dependency Injection)

스프링 프레임워크 코어 기능: 종속 객체를 생성 조립해주는 도구

==> DI와 IoC Controller

 

DI란, "부품 조립" 으로 생각하자!

 

아래와 같은 구조는 "Class A가 Class B를 일체형으로 가졌다." 라고 말한다.

즉, B는 A의 부품이라고 한다. (B는 A의 종속 객체(Dependency) 이다.)

일체형 보다 조립형이 결합력이 낮아지며 조립형이 부품을 쉽게 갈아끼울 수 있기 때문에 기업형에서는 조립형을 자주 사용한다.

 

조립형으로 부품을 갈아 끼울때는 두 가지 방법이 있다.

1) Setter Injection : Setter을 이용해서 부품을 조립

 

2) Construction Injection : 생성자를 이용해서 부품을 조립

 

조립형의 단점 : 매번 조립하는게 불편하다.

==> 극복방안 : 조립을 해주는 서비스를 받는 것!!

 

여기서 조립을 해주는(DI) 서비스 역할을 해주는 도구가 스프링이다!

 

4강 - IoC (Inversion Of Controller) 컨테이너

여러가지 부품들의 주문서 내역을 입력해서 스프링에게 입력해주어야 한다.

(여기서 주문서XML파일이나 Annotation 을 말한다.)

그러면 스프링은 우리가 보낸 주문서 내역대로 부품을 생성하고 조립을 해준다.

 

주문서 내역 대로 부품을 담는 컨테이너 = 부품 컨테이너(Dependency Container) = IoC 컨테이너

 

1) 부품을 주문하면 만들어서 컨테이너에 담는다
2) 부품끼리 조립해서 컨테이너에 담는다.

 

컨테이너에서 조립하는 과정을 보면 작은 단위의 부품부터 큰 단위로 간다.

 

일체형일때는 A 클래스의 객체(부품)을 만들었더니 B가 만들어지고, C가 만들어지고, D가 만들어진다.

==> 부품이 만들어져서 결합될때 정방향으로 만들어져서 결합된다.

 

조립형일때는 D가 먼저 만들어진 후 C가 만들어져서 D와 C가 결합되고 B가 만들어지면, [D,C]와 결합되고

A가 만들어지면 [B,C,D]와 결합이 된다.

==> 부품이 만들어져서 결합될때 역순으로 만들어져서 결합한다.

Inversion Of Control (역순) 으로 Container에 담는다. 즉, IoC Container

 

 

 

 

출처: 뉴렉쳐

www.youtube.com/watch?v=XtXHIDnzS9c&list=PLq8wAnVUcTFWxnsrMu5kS_jt_o8gpEiTR&index=1