1. What is spring framework?
: DI(Dependency Injection)을 지원하는 Container(자바 객체를 담고 관리하는 컨테이너)
* DI = IoC(Inversion of Control)
- 장점
: POJO(Plain Old Java Objects)를 이용한 쉬운 개발
: 부모 클래스를 이용하지 않고, DI와 interface를 활용한 객체간 느슨한 결합(loose coupling)
: Aspects와 templates를 이용한 단순 반복 코드 제거
2. History of Spring
- EJB(Enterprise JavaBeans)
: 기업용 어플리케이션 개발을 위한 표준 component model
: 복잡한 코드 개발 필요, 성능 미흡
- Spring 1.0
: 기존 EJB를 대체하기 위한 open-source, light-weight framework
: DI, AOP, POJO의 개념을 기반
- EJB 3.0
: spring의 장점을 반영하여 DI, POJO기반 개발 방법 지원
- Spring 2.0
: support for XML namespaces, AspectJ, and @Component
현재: Spring 5.0
3. Spring Framework 특징
1) Light-weight container and framework
: java 객체의 life-cycle 관리
2) DI(Dependency Injection) 지원
3) AOP(Aspect-Oriented Programming) 지원
4) 효율적인 Web application 지원
: Servlet-based Spring MVC web framework
: Spring WebFlux reactive web framework
: RESTful web wervice framework
5) JDBC, JPA, 선언적 transaction 처리 등 데이터베이스 연동 지원
6) 다양한 기술들과의 연동 지원
: EJB
: JDBC, Hibernate, JPA, MyBatis, NoSQL DB
: JSP, Mustache, Thymeleaf
4. Components
- 주요 module
- 주요 module 간 의존 관계
5. webMCV Framework
6. Dependency Injection(DI)
객체 외부에 존재하는 assembler(container)가 run-time에 객체들 사이의 의존 관계를 파악하고 의존 객체를 객체에 제공해 주는 것
* 객체 생성 시점에 의존 객체가 객체에 제공됨
* IoC : 객체가 의존 객체를 직접 생성하거나 찾을 필요 없음
* 객체들 간의 의존 관계는 XML 파일이나 JAVA 설정 클래스(Java-config), annotation 등을 통해 설정됨
-> Assembler가 설정 내용 참조하여 DI 실행
일반적인 DI 구현방법(Spring x)
- 구현방법 1 : 의존하는 객체를 직접 생성
- 구현방법 2 : Factory 클래스 이용
- 구현방법 3 : DI 이용
1) 생성자를 통해 의존 객체 전달받는 방법
2) Setter method를 통해 의존 객체 전달받는 방법
- 공통
7. 스프링의 DI 지원
Assempler 클래스 불필요
1) XML을 통한 객체 생성 및 의존관계 설정 (appContext.xml)
2) Annotation을 이용한 설정
3) Java code를 이용한 설정
8. AOP(Aspects Oriented Programming)
공통의 관심사항 적용 시 발생하는 의존 관계의 복잡성과 코드 중복 문제를 해결하기 위한 프로그램 개발 방법론
Cross-cutting Concerns(공통 관심사항)
: transaction, logging, security
AOP 실행 예제(POJO 기반)
'Programming > Spring' 카테고리의 다른 글
03. Auto-wiring, Java code 기반 설정, annotation 기반 설정 (0) | 2021.04.13 |
---|---|
02. SpringDI / 생성자 * setter 방식 / SpEL (0) | 2021.04.06 |
BoostCourse 7) DTO, DAO (0) | 2021.01.07 |
BoostCourse 6) Spring JDBC (0) | 2021.01.06 |
BoostCourse 5) Java Config를 이용한 IoC / DI (0) | 2021.01.06 |