프레임워크란?
- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것
- 애플리케이션을 만들기 위한 틀 혹은 구조
프레임워크의 장점과 단점
-
장점
- 효율적인 코드 작성
- 기본 뼈대를 제공해줌으로써 애플레케이션의 핵심 로직 개발에 집중할 수 있도록 해줌
- 효율적인 애플리케이션 관리
- Framework 규악에 맞춰 코드를 작성함으로써 유지보수 및 코드 재사용, 기능 확장등이 용이함
-
단점
- 프레임워크에 대한 학습 필요
- 자유롭고 유연한 개발의 제약
프레임워크와 라이브러리의 차이
- 라이브러리 - 컴퓨터 프로그램에서 빈번하게 사용되는 사전 컴파일된 루틴 또는 리소스(클래스, 템플릿, 설정 데이터 등)를 모아둔 것으로써 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 씀
- 프레임워크 - 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣음
- 프레임워크에서는 소프트웨어에 대한 주도권을 개발자로부터 가져옴으로써 소프트웨어의 흐름을 제어하게 되는데, 이를 제어의 역전(Inversion Of control: IoC) 라고 함
스프링 프레임워크
- 자바 생태계에서 가장 대중적인 응용프로그램 개발 프레임워크
- 객체 지향 언어로써 강력한 특징을 살려내는 프레임워크
- 좋은 객체 지향 애플리케이션을 개발할 수 있음
- 기업용 엔터프라이즈 시스템을 구축하기 위한 조건이 잘 갖춰짐
- 의존성 주입(DI, Dependency Injection)과 제어의 역전(IOC, Inversion of Control)으로 인해 좀 더 결합도를 낮추는 방식으로 어플리케이션 개발이 가능
스프링 이전의 웹개발 방식
- JSP -> Servlet -> spring mvc(xml) -> spring boot
- 웹 개발 방식의 변화에 따라 보다 간결하고 편리한 코드 작성이 가능해질 수 있었음.