Spring

[Spring] Spring이란

shb 2022. 5. 11. 15:11

* 스프링의 핵심
- 스프링은 자바 언어 기반의 프레임워크
- 자바 언어의 가장 큰 특징 - 객체 지향 언어
- 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
- 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크

 

* 스프링 프레임워크 특징
1. 경량 컨테이너
   a. 자바 객체를 담고 있는 컨테이너
2. DI (Dependency Injection: 의존주입)  지원
   a. 설정파일로 객체 의존 관계 설정 및 생성.
3. AOP (Aspect Orientec Programming) 지원
   a. 트랜잭션, 로깅, 보안 등  공통기능을 핵심기능에서 분리하여 적용 가능
4. IoC (Inversion Of Control) 제어반전 지원
5. POJO (Plain Old Java Object) 지원
   a. 컨테이너 안의 객체는 특별한 상속이 필요없는 평범한 자바 객체
6. 트랜잭션 처리를 위한 일관된 방법 지원 (영속성)
   a. 설정파일을 통한 일관된 트랜잭션 처리
7. 다양한 API 지원 
   a. 엔터프라이즈 어플리케이션 개발에 필요한 다양한 API 지원 
   (스케쥴링, 메일..)

 

모든 Spring project 의 핵심 기반은 ‘Spring Framework’ 
- 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타
- 웹기술 : 스프링 MVC, 스프링 WebFlux
- 데이터접근기술 : 트랜잭션, JDBC, ORM 지원,  XML지원
- 기술통합: 캐시, 이메일, 원격접근, 스케쥴링
- 테스트: 스프링 기반 테스트 지원
- 언어: 코틀린, 그루비
- 최근에는 Spring Boot 를 통해 Spring Framework 기술들을 편리하게 사용

 

* Spring이란 단어
- 애매하고, 너무 범위가 넓다. 문맥에 따라 다르게 사용
- 스프링 DI 컨테이너 기술
- 스프링 프레임워크
- 스프링 프레임워크 + 스프링 부트 + 스프링xxx  등을 모두 포함하는 생태계

 

* 프레임워크 (FrameWork)?
어플리케이션 프레임워크 는 프로그래밍 개발환경에서 기본적인 구조 (골조?) 를 제공하는 개발환경이다.   이를 통해, 어플리케이션 의 개발및 유지 보수의 생산성을 향상 시키는데 목적이 있다.
기본구조 라 함은 프레임워크 안에는 수많은 클래스, 함수, 개발툴 등의 집합체이고, 이들을 구동하는 다양한 구성요소들로 복잡하게 만들어져 있다. 
‘인터페이스’ 등의 제공을 통해 개발자가 이를 기반으로 개발함. 
결국 이미 제공된는 ‘틀’과 ‘클래스, 함수규칙’ 들의 동작을 이해해야 하고, 이를 사용하는 것인데.. 그러다 보니, 처음에 학습하고 숙달되는데 어려움이 있다.

 

* 프레임워크 vs 라이브러리
프레임워크는 단지 미리 만들어 둔 반제품이나, 확장해서 사용할 수 있도록 준비된 추상 라이브러리의 집합이 아니다.
프레임워크가 어떤 것인지 이해하려면 라이브러리와 프레임워크가 어떻게 다른지 알아야 한다.
라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다. 
단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.
반면에 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.
프레임워크에는 분명한 제어의 역전(IOC) 개념이 적용되어 있어야 합니다.
애플리케이션 코드는 프레임워크가 짜놓은 틀에서 수동적으로 동작해야 합니다.

 

* Maven 이란?
http://maven.apache.org/
- 자바용 프로젝트 빌드 관리 도구임 .
- 아파치 라이선스로 배포되는 오픈 소스 소프트웨어
- Project object model (POM) 개념에 기반을 두고 있음 .
- Maven can manage a project's build, reporting and   documentation from a central piece of information
- History
2004 년 07 월 13 일 , Apache Maven 발표
2018 년 10 월  24 현재 version 3.6.x

'Spring' 카테고리의 다른 글

[Spring Boot] Validation  (0) 2022.05.12
[SpringBoot] Request Parameter  (0) 2022.05.12
[SpringBoot] RequestMapping  (0) 2022.05.12
[SpringBoot] MVC  (0) 2022.05.12
[SpringBoot] Dependency Injection 의존주입  (0) 2022.05.12