Spring Framework 소개
1.Spring Framework 소개
1-1.프레임워크(Framework) : 기본적으로 프로그래밍을 하기 위한 어떠한 틀이나 구조를 제공
-Frame은 어떤 대상의 큰 틀이나 외형적인 구조를 의미
-Java 클래스 유형 중 기본적인 뼈대로만 구성되어 있는 것은 바로 추상 메서드만 정의되어 있는 인터페이스(Interface)
-그리고 Java에서의 Collection은 Map, Set, List 같은 인터페이스와 그 인터페이스들을 구현한 구현체들의 집합이기 때문에 Collection Framework라고 부름
-프레임워크를 사용하는 목적은 개발자가 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있도록 해주기 때문
-Framework의 장점
(1)효율적인 코드 작성 가능 - 개발하고자 하는 애플리케이션의 기본 구조 및 다양한 기능을 지원하기 때문
(2)정해진 규약이 있어 애플리케이션을 효율적으로 관리 - Framework의 규약에 맞게 코드를 작성하기 때문에, 유지보수가 필요한 경우 더 빠르고 쉽게 문제점을 파악해 수정 가능
-Framework의 단점
(1)내가 사용하고자 하는 Framework에 대한 학습이 필요
(2)자유롭고 유연한 개발이 어려움 - Framework의 규약을 벗어나기 어려움
1-2.Framework와 Library의 차이
-Library는 애플리케이션을 개발하는 데 사용되는 일련의 데이터 및 프로그래밍 코드(필요한 기능을 미리 구현해놓은 집합체)
-자동차는 차체를 구성하는 Frame, 그리고 바퀴 혹은 핸들 엔진과 같은 다양한 부품들이 모여서 하나의 자동차를 구성함
-자동차를 구성하고 있는 요소에서 Framework는 자동차의 뼈대(Frame)을 의미
-Library는 자동차에서 다양한 기능을 제공하는 부품을 의미
-한번 정해진 Framework를 교체하는일은 어렵지만, Library는 쉽게 교체가 가능하며 필요한 Library들을 선택적으로 사용할 수 있음
*이를 애플리케이션에 대한 제어권의 차이가 있다고 표현
**Library는 애플리케이션 흐름의 주도권이 개발자에게 있는 반면, Framework은 애플리케이션 흐름의 주도권이 Framework에 있음
***실제로 자동차 부품 교체시 차를 새로 사지 않는 한 Frame은 쉽게 교체할 수 없지만 핸들, 바퀴 등의 부품은 언제든지 쉽게 교체 가능
1-3.Spring Framework만의 장점
(1)POJO(Plan Old Java Object)기반의 구성
(2)DI(Dependency Injection) 지원
(3)AOP(Aspect Oriented Programming, 관점지향 프로그래밍) 지원
(4)Java 언어를 사용함으로써 얻는 장점
*Java 언어의 특징 중 정적 타입 언어로서 변수의 타입, 메서드의 입력과 출력이 어떤 타입을 가져야 하는지를 강제하여 협업 및 코드 수정과 보안이 용이하다는 장점
+다른 Java 기반 Framework 대신 Spring을 많이 사용하는 이유 : 보다 나은 성능과 서비스의 안전성이 필요한 복잡한 기업용 엔터프라이즈 시스템을 제대로 구축할 수 있음
+Spring MVC 방식이 도입됨으로써 Java 웹 애플리케이션의 제작 방식이 획기적으로 변하게 되었음
+Spring MVC 설정의 복잡함과 어려움을 극복하기 위해 Spring Boot이 탄생
1-4.Java 서블릿(Servlet)
-자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불림
-웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종
-주로 이 기능을 이용하여 쇼핑몰이나 온라인 뱅킹 등의 다양한 웹 시스템이 구현되고 있음
-Java Servlet 자체를 사용하는 기술은 현재 거의 사용하고 있지 않지만 Servlet은 Spring MVC 같은 Java 기반의 웹 애플리케이션 내부에서 여전히 사용 되고 있음
1-5.서블릿 컨테이너(Servlet Container)
-웹 컨테이너라고도 불리며, 서블릿의 생명주기를 관리하고, URL과 특정 서블릿을 맵핑하며 URL 요청이 올바른 접근 권한을 갖도록 보장함
-쉽게 말해 서블릿(Servlet) 기반의 웹 애플리케이션 실행, Servlet의 생명 주기 관리, 쓰레드 풀(Thread Pool)을 생성해서 Servlet과 Thread를 매핑 시켜주기도 함
-아파치 톰캣(Apache Tomcat)은 서블릿 컨테이너의 한 종류로써 Spring MVC 기반의 웹 애플리케이션 역시 기본적으로 아파치 톰캣에서 실행됨
-내용 출처 : code states