danc
danc*dev
danc
  • 분류 전체보기
    • codestates_BE_bootcamp39
      • 주단위 일기
      • 회고
    • programming
      • JAVA
      • SPRING
      • GENERAL
      • LINUX
      • ALGORITHM
      • ERROR_HANDLING
    • web
      • NETWORK
      • DB
      • HTML
      • CSS
    • kr
    • nz

최근 글

인기 글

태그

  • AOP
  • 일기
  • 코드스테이츠
  • 윈도우 11 우분투
  • TIL
  • 코드스테이츠 백엔드
  • 회고
  • css
  • TIL 일기
  • TIL일기
  • React에서 Authorization헤더
  • HTTP

최근 댓글

티스토리

hELLO · Designed By 정상우.
danc

danc*dev

Spring Framework
programming/SPRING

Spring Framework

2022. 6. 14. 22:10

*서블릿 컨테이너 부분  추가할 것 

프로그래밍 관점에서 Framework는 기본적으로 프로그래밍을 하기 위해
어떠한 틀이나 구조를 제공한다. 자바에서 배웠던 Collections Framework가 바로 이 기능을 한다.
List, Set 그리고 Map 같은 인터페이스와 그걸 구현한 클래스의 집합이다.

개발자가 바닥부터 모든 기능을 전부 개발하면서 진행하는 것이 아니라,
다양한 기능들(Application 간의 통신, 데이터를 데이터 저장소에 저장 등)을
Framework가 Library 형태로 제공하기 때문에 개발자는 프로그램의 핵심 기능의 개발에만
온전히 집중할 수 있게 된다. 

Framework와 Library가 무슨 차이가 있는지 많이 헷갈렸는데
Application에 대한 제어권을 기준으로 생각하면 된다.

  제어권 (애플리케이션 흐름의 주도권)
Framework Framework
Library 개발자

 

이 차이점은 Spring Framework의 핵심 개념 중 하나인
Inversion Of Control (IOC - 제어의 역전)과 깊은 관련이 있다. 


Spring Framework 

Spring Framework 말고도 자바 기반의 웹 Application을 개발할 수 있는 프레임워크들이 있다.

Apache Struts2, Apache Wicket, JSF(Java Server Faces) 그리고 Grails 같은
Java 또는 JVM 기반의 웹 프레임워크들이 있고 지금도 꾸준히 업데이트가 되고 있다. 

기업 관점에서 봤을 때, 기업용 엔터프라이즈 시스템 애플리케이션을 개발한다 치면 어떻게
효율적이고, 개발 생산성을 높이고 유지보수를 좀 더 용이하게 할 것인가 고민하는 것이 중요하다. 

이런 관점에서 Spring Framework가 매우 효율적이라 할 수 있는데 이유는 아래와 같다. 

  • OOP 원칙에 맞게 재사용과 확장이 가능한 Application 개발 스킬을 향상할 수 있다.

  • 성능과 서비스의 안정성이 중요시되는 복잡한 기업용 엔터프라이즈 시스템을
    제대로 구축할 수 있게 된다.


즉 효율적으로 개발하면서 생산성은 높이고 유지보수도 쉽게 해 준다. 

다만 스프링 프레임워크는 애플리케이션 기본 구조를 잡는 설정 작업이 많이 불편하기 때문에
이를 보완한 Spring Boot라는 게 나왔다. 많은 부분들을 보완해주어 개발자 입장에서 더욱 편리해졌다


Spring Boot

스프링 부트를 사용하면 다음의 엄청난 이점들이 있다. 

  • XML 기반의 복잡한 설계 방식을 알아서 처리해줌 

  • 의존 라이브러리를 자동으로 관리해줌

  • Application의 설정을 자동으로 구성해줌

  • Production레벨 application의 손쉬운 빌드

  • 내장된 WAS를 통한 손쉬운 배포 

WAS(Web Aplication Server)? 

구현된 코드를 빌드해서 나온 결과물을 실제 웹 application으로 실행하게 해주는 '서버'
자바에서는 Servlet Container라고도 부르며 대표적인 WAS로는  Apache Tomcat이 있다. 

자바 기반의 Web Application을 일반적인 방식으로 배포할 경우, application 코드를
WAR(Web Application Archive) 파일 형태로 빌드하고 WAS에 배포하여 해당 application을 실행한다. 


스프링 부트는 기본 설정 작업마저 스프링이 대신 처리해 주기 때문에 더욱 편리하다.

 

귀찮은건 스프링이 알아서 하고 나는 필요한 부분 개발하면 된다

 


JSP

Spring Framework가 나오기 전, 초창기 시절에는 JSP(Java Server Page)를 이용해 웹 application 개발을 했다.
JSP 개방 방식은 쉽게 요약해서 클라이언트 측 코드(html/Javascript)와
서버 측 코드(Java)가 뒤섞여 있는 방식인데
주로 대규모 기업용 시스템 구축에 사용된다.

아무래도 뒤섞여 있고 구현해야 할게 많다 보니 코드가 너무 길고 가독성도 떨어지며 매우 복잡하다.
따라서 유지보수의 측면에서 매우 효율성이 떨어지고 웹 개발자들
(웹 디자이너, 퍼블리셔, JS개발자, Java 개발자) 간의
협업이 힘들어지게 된다. 

JSP방식을 주류로 개발할 당시에는 프런트엔드 / 백엔드 개발자로 나눠서 개발한 것이 아닌
양쪽 모두를 개발하는 개발자들이 많았다.  

 

Introduction to JSP - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 


Servlet 

JSP 개발 방식은 내부적으로 Servlet 방식을 사용하는데, Servlet(서블릿)은 클라이언트의
웹 요청 처리에 특화된
자바 클래스의 일종이다.
멀티스레드를 지원하기 때문에 엄청난 속도로 늘어나는 웹 사용자 트래픽을 감당할 수 있게 된다. 

Spring Framework 또한 웹 요청을 처리할 때 내부적으로 Servlet을 사용한다. 

서블릿을 이용한다는 말은 Servlet을 이용하기 위한 Java코드가 클라이언트 측 코드에서
분리된 별로의 자바 클래스로 관리된다는 것을 의미한다. 

 

Introduction to Java Servlets | Baeldung

A quick intro to working with Java Servlets, driven by practical examples.

www.baeldung.com


Servlet Container 추가할 것 

저작자표시 (새창열림)

'programming > SPRING' 카테고리의 다른 글

AOP - Pointcut 표현식 / 지시자  (0) 2022.06.20
AOP - Advice  (0) 2022.06.20
[TBC]IoC 와 DI  (0) 2022.06.18
PSA  (0) 2022.06.15
POJO(Plain Old Java Object)  (0) 2022.06.14
    'programming/SPRING' 카테고리의 다른 글
    • AOP - Advice
    • [TBC]IoC 와 DI
    • PSA
    • POJO(Plain Old Java Object)
    danc
    danc
    Backend 개발자를 목표로 공부 중 입니다.

    티스토리툴바