Spring framework
2021. 10. 10. 09:54ㆍCloud Native
- 목차
반응형
About Spring Framework
JAVA enterprise 개발에 사용되는 open source framework
JVM 상에서 Groovy와 Kotlin을 지원함
Spring Framework 5.1의 경우 JDK 8+ (Java SE 8+)을 요구하며 JDK 11 LTS를 지원을 제공함Framework의 주요 component를 container로 지칭
cf.
- JAVA Beans
- JAVA로 작성된 component
- JSP (JavaServer Pages)
- HTML 내 JAVA code를 넣어 HTML page를 동적 생성하는 tool
- Flask라던가 Django가 HTML 내 Python code를 넣어 HTML page를 생성하는 것과 동일 개념
- JSP MVC architecture
- Servlet이 controller
- JSP가 view를 생성
- Beans가 model
Design Philosophy
- 설계의 결정을 최대한 미룰 수 있다.
- 무엇이든 교체 가능한 구조를 지향한다.
- 예를들어 persistence를 개발 도중에 교체할 수 있다.
- perspectives
- 다양한 상황을 고려하여 최대한 flexible한 운용 및 개발이 가능하게 한다.
- backward compatibility
- JDK version 및 3rd party libralies의 선택을 최대한 신중하게 하여 호환성을 지원한다.
- intuitive API
- 최대한 직관적이고 사용하기 쉬운 API를 제공하도록 한다.
- high code quality
- clean code structure를 지향한다.
- 구조적으로 clean하도록 한다. (e.g., no cirdular dependencies)
- accurate, current, meaningful한 document를 제공한다.
Features of The Spring Framework
- 가벼운 framework
- 일반 자바 객체인 POJO(Plain Old Java Object)로도 개발이 가능
- DI (Dependency Injection)
- 객체간의 static 의존성을 제거하여 framework 수준에서 runtime 의존성만 생성
- 이로서 각 component 객체 개발 시 독립적으로 개별 개발 할 수 있음 (재사용성 극대화)
- Framework 내 IoC container들이 이를 지원함
- IoC (Inversion Of Control)
- 생성된 객체의 control은 contaner들이 처리
- AOP (Aspect Oriented Programming)
- 보안, transaction, logging 등 필수 기능들에 대한 개발을 hooking 방식으로 add-on 하여 개발 할 수 있음
- Transaction 처리
- XML, Java, propoerty 등의 설정 및 직접 코딩을 통한 transaction 방식 지원
- Spring MVC
- DispatcherServlet이 controller의 역할 수행; 적절한 서비스에 분산
- 결과는 다양한 형식의 View 서비스들로 표시됨
Spring Modules
- Spring Core
- Beans의 lifecycle 처리에 대한 기능을 제공: IoC, DI, Factory
- Spring Context
- Spring DAO
- SPring ORM
- Object Relation Mapping framework인 Hibernate, IBatis, JDO등의 integration
- Spring AOP
- Python의 Decorator와 유사하게 annotation을 통한 기능의 decoration
- 코드의 중복 구현을 제거하는 방법
- Spring Web
- Spring Web MVC
반응형
'Cloud Native' 카테고리의 다른 글
서버호스팅, 웹호스팅 (0) | 2022.01.08 |
---|---|
PHP ? PHP 기본 문법 (0) | 2022.01.04 |
OAuth 2.0 (0) | 2021.12.26 |
SOAP and REST (0) | 2021.11.30 |
Cloud native (0) | 2021.11.07 |