Spring 에 대해 알아보자 - 1

Gyuhan Park·2021년 12월 4일
0

spring

목록 보기
1/18

Spring 이 나온 배경

  1. Dependency Injection (DI)
  2. transaction management

Java EE와 Java SE 를 함께 사용해왔는데 Enterprise Edition (EE) 가 더 효율적인 spring framework 로 대체

Spring의 역할 및 사용 목적

  1. MVC - DI
  2. 트랜젝션 관리 - AOP
  3. 인증과 권한 - servlet filter

Spring Framework 가 나오기 전 문제점

UI - service - Dao(Data access object) - DB

* 객체 수정이 필요하다면?
1. Dao 계층에서 객체 코드 수정
2. 코드 추가후 덮어쓰기 -> service 계층에서 코드수정 필요
객체 수정이 이루어질 때 소스코드가 필요하다 -> 결합력이 높다

* 코드없이 수정할 순 없을까?
결합력이 낮은 코드를 만드는 게 목적 -> 코드가 없어도 수정 가능한 서비스 -> interface 사용
service 계층은 데이터를 직접 조작하지 않고 interface와 연결.

UI - service - Dao(interface) - Dao - DB

유지보수 측면에서 코드를 직접 수정하고 재배포하는 작업은 복잡할 뿐만 아니라 위험함.
다른 파일로 객체를 저장해 UI 계층에서 컨트롤할 수 있도록 설계.

DI(Dependency Injection)

일체형(construction injection)

  • 생성자를 이용해 인스턴스 생성.
  • 상위 계층에서 조작 불가능.

조립형(setter injection) => good!!

  • setter 를 이용하여 인스턴스 생성.
  • 상위 계층에서 조작 가능.
Student student = new Student(); // 부품 ; dependency
School school = new School(); // 부품 ; dependency
school.setStudent(student); // 조립 ; injection

IoC (Inversion Of Control) 컨테이너

부품을 조립하기 위해선(DI) 주문서(명세서)가 필요함.
주문서는 XML 파일이나 annotation 으로 이루어짐.
주문서에 있는 내용대로 객체를 생성한 후 IoC 컨테이너에 저장.

Why is it called IoC?
일체형의 경우 범위가 큰 객체를 만든 후 하위계층에 인스턴스가 만들어진다.
조립형의 경우 작은 부품을 만들어 상위 계층에 조립한다.
조립형은 일체형과 부품 생성 순서가 반대라는 의미로, Inversion Of Control

profile
단단한 프론트엔드 개발자가 되고 싶은

0개의 댓글