Today I Learned

2024 스파르타 내일배움캠프 Sping 트랙 참여 // day29

shinelee26 2024. 11. 11. 20:56

오늘 진행한 학습 요약

1. Servlet - Jsp - MVC - Spring 진화 과정

  • Servlet
  • Jsp
  • MVC
  • Spring
IT 늦공 김부장 - Servlet - Jsp - MVC - Spring 진화과정에 대한 리뷰 | 웹 개발 입문자에게는 꽤 좋은 내용 | 기존 개발자는 가던길을 멈추고 잠시 되돌아보는 시간을~ 링크 : https://youtu.be/PH8-V6ah0XQ?si=mx1FO6IshnLqHU9F

 

2. Spring boot 주요 개념 정리

  • 의존성 주입
  • 자동 설정 (Auto Configuration)
  • 스프링 스타터 (Spring Starters)
  • 내장 서버 (Embedded Server)
  • Spring Boot CLI (Command Line Interface)
  • 의견보다 관습 (Opinionated Defaults)
  • Actuator
  • 스프링 부트 애플리케이션 (Spring Boot Application)
  • 프로덕션 준비 기능
점프 투 스프링부트 링크 : https://wikidocs.net/160047
코딩하는 너굴맨 - 스프링 부트(Spring boot)란? 링크 : https://chick-it.tistory.com/38
elancer 개발 테크 - Spring과 Spring Boot의 차이점을 아시나요? 링크 : https://www.elancer.co.kr/blog/detail/158

 

2. 알고리즘 코드카다  Day25~27(작성 생략)

CodingTest Git-hub 링크 : https://github.com/chews26/CodingTest

 


학습 정리

1. Servlet - Jsp - MVC - Spring 진화 과정

  • 1. Servlet
    • Java Servlet은 최초의 자바 웹 애플리케이션 기술로, Java 코드로 HTTP 요청과 응답을 처리
    • HTML과 Java 코드가 혼합되기 때문에 유지보수와 가독성이 떨어짐. 또한, 복잡한 비즈니스 로직을 처리하는 데 한계
  • 2. Jsp
    • 프레젠테이션 레이어 분리: JSP는 HTML 코드에 자바 코드를 삽입할 수 있도록 하여, 주로 사용자 인터페이스를 담당하도록 만들어짐
    • 서블릿의 단점을 보완: JSP는 HTML과 Java 코드를 분리하는 데 도움이 되며, 주로 사용자 화면을 구성하는 역할
    • JSP와 서블릿만으로는 복잡한 비즈니스 로직과 데이터 처리를 관리하기 어려움
  • 3. MVC
    • 애플리케이션 구조 개선: 모델(Model), 뷰(View), 컨트롤러(Controller)를 분리하여 유지보수를 용이하게 하고 코드 재사용성을 높이는 패턴
    • 로직과 UI를 분리하여 역할을 명확히 함. Model은 데이터 처리를, View는 화면 출력을, Controller는 요청을 받아 Model과 View를 연결
    • JSP와 서블릿을 MVC 패턴으로 결합하여 클라이언트의 요청을 컨트롤러가 처리하고, Model과 View 간의 협력을 통해 동적인 웹 페이지를 생성할 수 있음
  • 4. Spring
    • Spring은 DI(Dependency Injection)와 AOP(Aspect-Oriented Programming)를 기반으로 하는 프레임워크로, 웹 애플리케이션의 다양한 요구사항을 체계적으로 지원
    • Spring의 MVC 모듈은 기존의 서블릿, JSP를 대체하며, MVC 패턴을 더 쉽게 구현할 수 있는 환경을 제공
    • RESTful API, 유연한 데이터 처리를 위한 JDBC, 트랜잭션 관리 등을 손쉽게 설정하고 사용
    • Spring은 웹 계층을 넘어 데이터 액세스, 트랜잭션 관리, 테스트, 보안 등 다양한 기능을 제공
    • 개발자들은 비즈니스 로직에 집중할 수 있으며, 코드의 유지보수성과 확장성이 크게 향상

 


2. Spring boot 주요 개념 정리

  • 의존성 주입
    • 의존성 주입은 객체 간의 의존 관계를 코드 내에서 직접 설정하지 않고, 외부에서 주입하여 관리하는 개념
  • 자동 설정 (Auto Configuration)
    • Spring Boot는 애플리케이션을 실행할 때 필요한 기본 설정을 자동으로 구성
    • 데이터베이스 연결, 웹 서버 설정, 보안 설정 등을 자동으로 구성하여 개발자가 설정에 신경 쓰지 않고 비즈니스 로직 구현에 집중
  • 스프링 스타터 (Spring Starters)
    • 스프링 부트는 다양한 기능에 맞춘 스타터 패키지(Spring Starters)를 제공
    • 이 스타터는 기능별로 필요한 의존성(라이브러리)들을 미리 묶어둔 모음
    • spring-boot-starter-web을 추가하면 웹 애플리케이션 개발에 필요한 모든 기본 라이브러리가 자동으로 포함
  • 내장 서버 (Embedded Server)
    • Spring Boot는 Tomcat, Jetty, Undertow 같은 웹 서버를 내장
    • JAR 파일로 패키징하여 실행 가능한 독립적인 애플리케이션을 쉽게 배포
  • Spring Boot CLI (Command Line Interface)
    • 스프링 부트는 커맨드 라인 인터페이스(CLI)를 제공하여 Groovy 스크립트를 사용해 빠르게 애플리케이션을 작성하고 실행할 수 있도록 지원
  • 의견보다 관습 (Opinionated Defaults)
    • Spring Boot는 관습(Convention)을 따르는 기본 설정을 제공
    • 개발자는 설정보다는 관습을 따라 기본 설정을 이용하면서 빠르게 개발을 진행할 수 있으며, 필요 시에는 각 설정을 변경하여 커스터마이징할 수도 있음
  • Actuator
    • Actuator는 애플리케이션의 상태, 메트릭, 설정 정보 등을 모니터링할 수 있는 기능을 제공
    • spring-boot-starter-actuator를 통해 애플리케이션의 상태 정보를 쉽게 확인할 수 있으며, 애플리케이션의 운영 환경에서 성능 및 상태 모니터링에 매우 유용
  • 스프링 부트 애플리케이션 (Spring Boot Application)
    • @SpringBootApplication 애노테이션을 사용하여 애플리케이션을 정의
    • 이 애노테이션은 스프링 부트의 핵심 구성 요소들을 포함
  • 프로덕션 준비 기능
    • Spring Boot는 기본적으로 로깅 설정, 오류 페이지, 예외 핸들링, 보안 기능 등 프로덕션에 필요한 여러 가지 준비된 기능을 제공