- 웹서버
- 정적 파일
- 정적 리소스
- 웹 애플리케이션 서버
- 동적 파일
servlet
- 자바에 html 데이터를 넣음
jsp
- html 사이에 자바 데이터를 넣음
자바 객체
- 대상을 추상화한 자바 코드
json
- 대상을 추상화한 문자열 데이터
자바 기반의 오픈 소스 애플리케이션 프레임워크
- 엔터프라이즈 애플리케이션을 개발하기 위한 다양한 기능과 도구를 제공하여 개발자들이 애플리케이션을 더욱 효율적이고 생산적으로 개발할 수 있도록 지원
제어 역전(IoC, Inversion of Control):
스프링은 제어의 역전 원칙을 따르며, 개발자가 코드의 흐름을 제어하는 대신 스프링 컨테이너가 객체의 생성과 관리를 담당합니다. 이를 통해 애플리케이션의 결합도를 낮추고 유연성을 높일 수 있습니다.
의존성 주입(DI, Dependency Injection):
어떤 작업을 할 떄 꼭 필요한 객체를 개발자가 만들어서 넣는 게 아닌 프레임워크한테 만들어서 넣어달라고 요청
관점 지향 프로그래밍(AOP, Aspect-Oriented Programming):
스프링은 관점 지향 프로그래밍을 지원하여 핵심 비즈니스 로직과 공통적인 부가 기능(로깅, 트랜잭션 관리 등)을 분리하여 개발할 수 있습니다.
스프링 부트는 스프링 애플리케이션의 설정과 구성을 간소화하고 개발자들이 빠르게 애플리케이션을 개발할 수 있도록 지원
설정의 간소화:
스프링 레거시에서는 개발자가 XML 기반의 설정 파일을 작성하여 스프링 애플리케이션의 구성을 명시적으로 정의해야 했습니다. 반면에, 스프링 부트는 애너테이션과 자동 설정을 활용하여 개발자가 별도의 설정 파일을 작성하지 않아도 기본적인 설정을 자동으로 처리합니다. 이를 통해 설정의 간소화와 생산성 향상을 이룰 수 있습니다.내장 서버 지원:
스프링 레거시에서는 애플리케이션을 실행하기 위해 외부 서버(예: Apache Tomcat)를 설치하고 구성해야 했습니다. 반면에, 스프링 부트는 내장 서버(예: Tomcat, Jetty, Undertow)를 제공하여 별도의 서버 설치 없이 애플리케이션을 실행할 수 있습니다. 이는 개발 및 테스트 단계에서 편리함을 제공합니다.의존성 관리:
스프링 레거시에서는 개발자가 직접 스프링과 관련된 라이브러리의 버전을 관리해야 했습니다. 반면에, 스프링 부트는 의존성 관리를 자동으로 처리하여 스프링 및 서드파티 라이브러리의 버전 충돌 문제를 최소화합니다.액추에이터(Actuator):
스프링 부트에는 액추에이터 기능이 내장되어 있습니다. 액추에이터는 애플리케이션의 상태 모니터링, 메트릭 수집, 로그 출력 등의 관리 기능을 제공합니다. 이를 통해 애플리케이션의 운영 환경에서의 모니터링과 관리가 용이해집니다.외부 설정 지원:
스프링 레거시에서는 설정 정보를 XML 파일에 명시적으로 작성해야 했습니다. 반면에, 스프링 부트는 프로퍼티 파일, YAML 파일, 환경 변수, 커맨드 라인 인자 등 다양한 방식으로 설정 정보를 외부에 저장하고 사용할 수 있습니다.기타 기능:
스프링 부트는 다양한 추가 기능을 제공합니다. 예를 들어, 자동 설정, 스프링 부트 스타터, 스프링 부트 액추에이터 등의 기능을 통해 개발자는 스프링 애플리케이션을 보다 효율적으로 개발하고 운영할 수 있습니다.
- 사용자는 애플리케이션에 요청을 보냅니다.
- 요청은 컨트롤러(Controller)로 전달됩니다.
- 컨트롤러는 요청을 처리하고 필요한 데이터를 모델(Model)에 요청합니다.
- 모델은 데이터를 처리하고 필요한 결과를 생성합니다.
- 결과는 뷰(View)로 전달됩니다.
- 뷰는 모델에서 전달받은 데이터를 사용하여 사용자에게 결과를 시각적으로 표현합니다.
- 완성된 응답은 사용자에게 전달됩니다.