그저 그냥 뜻만 풀이하자면 Framework = 뼈대
라고 볼 수도 있지만 프로그래밍 적인 관점으로 보자면
뼈대 = 프로그램의 기본 구조
로 볼 수 있다.
원하는 기능 구현에만 집중하여 빠르게 개발 할 수 있도록 기본적으로 필요한 기능을 갖추고 있는 것으로 위에서 설명한 라이브러리가 포함되어 있습니다.
~~~라고 하는 설명이 있는데
한 마디로는
프레임워크란 웹 개발을 보다 쉽고 간편하게 할 수 있도록 도와주는 도구이다.
그 중 하나로 지금 우리가 알아볼려고 하는 Spring
이다.
다른 대표적인 FrameWork로는
- Python -> Django
- Java -> Spring
- JavaScript -> Express 등등이 있다.
Spring Framework 는 Java 플랫폼 을 위한 애플리케이션 프레임워크 이자 제어 컨테이너 의 역전입니다 . 프레임워크의 핵심 기능은 모든 Java 애플리케이션에서 사용할 수 있지만 Java EE (Enterprise Edition) 플랫폼 위에 웹 애플리케이션을 구축하기 위한 확장이 있습니다. 프레임워크는 특정 프로그래밍 모델 을 강요하지 않지만 EJB( Enterprise JavaBeans ) 모델 에 추가되어 Java 커뮤니티에서 인기를 얻었습니다 . Spring Framework는 오픈 소스 입니다.
출처: https://en.wikipedia.org/wiki/Spring_Framework#Version_history
Spring이라는 이름의 유래는 Java EE(엔터프라이즈 에디션)의 스펙을 구현한 EJB가 기술의 복잡도가 증가해서 성능이 느렸던 것을 탈피해야겠다고 하여 EJB 시절을 -> 겨울 로 빗대어 겨울 후의 "봄"으로 새로운 시작을 한다는 의미에서 spring이 되었다.
👉 EJB? : EJB(Enterprise Java Bean), 기업환경의 시스템을 구현하기 위한 서버 측 컴포넌트 모델이다. 일반적으로 업무 로직을 가지고 있는 서버 어플리케이션을 EJB라고 한다.
1. 경량 컨테이너
👉 자바 객체들을 직접 관리한다.
2. 제어 역할(IOC: Inversion of Control)
👉 제어권이 사용자에게 있는게 아니라 프레임워크에 있어서 스프링에서 사용자 코드를 호출한다.
3. 의존성 주입(DI : Dependency Injection)
👉 각 계층, 서비스 간의 의존성이 존재할 경우에는 프레임워크가 서로를 연결을 시켜준다.
4. 관점 지향 프로그래밍(AOP: Aspect- Oriented Programming)
👉 공통적으로 사용하는 기능들을 분리하여 관리한다.
5. MVC 패턴
👉 Model View Controller
6. POJO 방식 프레임워크
👉 Plain Old Java Object 방식의 프레임워크로 단순한 Javabeans 객체를 의미
7. 확장성이 높다.
👉 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.
8. 동적(Dynamic) 웹 사이트 개발을 위한 프레임워크
👉 대한민국 전자정부 표준 프레임워크의 기반 기술
오늘은 간단히 Spring에 대한 특징과 정의에 대해서 알아보았는데 다음 시간에는 Spring을 사용할때 어떤 것들이 있는지 살펴보도록 하자.