아직 작성중인 글입니다 :) 불완전한 내용이 포함되어 있을 수 있습니다 ✔️
Java™ Platform, Standard Edition(Java SE) 및 Java Platform, Enterprise Edition(Java EE)은 Java 프로그래밍 언어로 애플리케이션 서버를 프로그래밍하기 위해 폭넓게 사용되는 플랫폼
Java Platform, Standard Edition(Java SE)은 추상 Java 플랫폼을 기술하는 스펙
자바의 표준 플랫폼이자 핵심기능을 제공, 데스크톱의 다양한 환경에서 사용
가장 기본이 되는 표준 에디션인 자바 플랫폼이다. 보통 JavaSE Development Kit, 줄여서 JDK를 설치 받아서 사용할 수 있다.
java.lang.*
,java.io.*
,java.util.*
등등 java 프로그래밍 언어를 배울때 사용하는 대부분의 패키지가 이에 속한다
스프링이란 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크라고 한다
스프링의 변천사
자바를 이용해 비즈니스 서비스를 개발할 때 비즈니스 로직 뿐만 아니라 트랜잭션, 보안 등 로우레벨의 로직까지 작성해야하는 부담감을 없애고자 EJB(Enterprise Java Beans)를 만들었다고 한다.
EJB를 사용하면서 로우레벨의 로직 개발에 대한 수고를 덜 수 있었지만, 한 두가지 기능을 사용하기 위해 거대한 EJB를 상속받거나 implements 하게 되어 가벼운 서비스조차도 무겁게 만들어졌고, 다른 기능으로 대체하기 위해선 전체 코드를 수정해야 하는 문제점이 발생하였다.
이에 JAVA의 기본 개념인 객체지향에 집중하고, 특정 클래스나 라이브러리에 종속되지 않는 POJO 구성으로 코드를 작성한다면 이런 문제점을 해결할 수 있을 것이라고 생각했다.
이런맥락에서 Spring은 POJO 방식을 기반으로 한 웹 프레임워크이고, IoC와 DI, AOP 등 Spring의 주요 기술을 활용해 POJO 기반의 구성을 이루게 되었다.
인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약
요청에 대한 응답상태이며 웹 브라우저는 상태코드에 따라 동작방식을 결정한다
서버 또는 클라이언트에 전송된 리소스 유형을 알려주기 위한 매커니즘
Jakarta Servlet과 JSP는 웹 애플리케이션을 개발하는데 필수적인 요소입니다. 서블릿은 웹 애플리케이션의 컨트롤러로서 요청을 처리하고, JSP는 뷰를 생성하는 역할
이때 서블릿은 WAS(Web Application Server)의 서블릿 컨테이너 안에서 동작하게된다
WAS 가 웹 서버의 역할까지 수행하면 되는거 아닌가?? 아니다!
- 기능을 분리하여 서버 부하를 방지한다. 정적 콘텐츠까지 WAS 가 처리하면 처리 속도가 너무 느려진다
- 물리적으로 분리하여 보안을 강화시킨다. (SSL 대한 암복호화 처리에 Web Server를 사용한다)
- 여러 대의 WAS를 연결해 로드 밸런싱 용도로 사용할 수 있다.
- 여러 언어의 웹 어플리케이션 서비스가 가능하다.
즉, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server, WAS를 각기 사용한다.
서블릿 컨테이너는 서블릿을 담고 관리해주는 컨테이너
위에서 설명한 WAS 는 서블릿 컨테이너를 포함한다.
절대 다수의 웹 애플리케이션의 서블릿 스택이 쓰이지만
메시징 기반의 서비스, 채팅 애플리케이션, 주식 애플리케이션(비트코인) 등에는 리액티브 스택이 유리하다고 한다
스프링에서 @Controller, @Service, @Repository 등의 어노테이션만 붙이면, Bean Factory에서 알아서 해당 어노테이션이 붙은 클래스를 생성하고 관리해주는데, 개발자들이 Bean Factory에 해당 클래스들을 알려준 적이 없는데 어떻게 해당 클래스를 인지하는 것일까?
여기서 리플렉션 API 의 개념이 사용된다. 컴파일 이후 런타임에 해당 어노테이션이 붙은 클래스들을 탐색하고 발견한다면, 리플렉션을 통해 해당 클래스의 인스턴스를 생성하고 필요한 필드를 주입하여 Bean Factory에 저장해두어 인지한다고 한다.
아래와 같이 애노테이션과 리플렉션 API가 작동한다.
개발자는 호환성을 고려해 시스템을 설계할 줄 알아야한다. 즉 애플리케이션 스택을 조립해야한다. 하지만 너무 오래걸리고 복잡하기 때문에 스프링부트가 이러한 기능을 해준다
스프링 웹 애플리케이션은 프론트 컨트롤러 패턴과 mvc 아키텍쳐 패턴으로 동작하고 전자는 모든 요청을 받아 후자를 통해서 요청을 처리한다. 이 프론트 컨트롤러의 스프링 컨트롤러의 이름은 dispatcher servlet 이고, 루트 URL 로 접근하면 dispatcher servlet가 활성화되면서 요청을 받아 내부에서 처리해 줄 수 있는 MVC를 찾고 없으면, 404 not found를 낸다.
trace, debug, info, warn, error