반응형

 

 

 

 

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 기반)


 

 

 

 

 

 

반응형

+ Recent posts