Backend 취업준비/Spring
스프링과 스프링 부트
aammddkkzxc
2024. 2. 29. 16:09
스프링 부트의 주요 특징 1 : 내장WAS
- 톰캣 등 웹 애플리케이션 서버(WAS)가 내장되어 있어서 따로 설치를 하지 않아도 독립적으로 실행 가능
- 스프링 부트가 없던 시절 스프링으로 웹 어플리케이션을 배포하려면
- WAS를 설치한다
- 개발한 웹 어플리케이션을 WAS로 빌드
- 빌드한 WAR파일을 WAS폴더 하위로 넣는다
- WAS를 실행
- 스프링부트에서는
- WAR파일이 아닌 jar파일로 패키징
- main메소드로 바로 실행 가능
- 스프링 부트가 없던 시절 스프링으로 웹 어플리케이션을 배포하려면
Web과 WAS(Web Application Server)
- Web
- 사용자는 웹 브라우저를 통해 웹 서버에 요청을 보내고, 서버는 해당 요청에 대한 응답을 반환하여 사용자에게 보여준다
- 동적인 콘텐츠 요청을 받은 웹 서버는 해당 요청을 WAS로 전송하고, WAS는 요청을 처리하여 동적인 콘텐츠를 생성한 후, 그 결과를 다시 웹 서버로 전달. 최종적으로 클라이언트(웹 브라우저)에게 반환하여 사용자에게 보여줌
- WAS(Web Application Server)
- WAS는 클라이언트의 요청을 받아 동적인 웹 애플리케이션을 실행하는 소프트웨어
- 정적인 콘텐츠(HTML 파일 등)를 제공하는 웹 서버와는 달리, WAS는 동적인 콘텐츠를 생성하고 실행하기 위한 환경을 제공 (WEB이 WAS에 포함되는 건지 확인)
- WAS는 여러 기능을 포함할 수 있으며, 주로 데이터베이스 연동, 트랜잭션 관리, 보안 기능, 스레드 관리, 세션 관리 등을 처리
- 대표적인 WAS로는 Tomcat
jar파일
- .zip
- .zip파일은 하나의 파일 안에 여러 개의 파일이 들어 있는 파일, 이러한 형태를 아카이브(archive)라고 함.
- zip archive는 여러 파일을 하나의 파일로 편리하게 다루고 보관할 수 있으며 더하여 압축까지 해주어 실제 아카이브들의 각 용량의 합보다 zip 파일의 용량이 더 작음
- .jar
- jar 파일은 Java에서 사용되는 특정 유형의 아카이브.
- 이 또한 여러 파일이 포함된 단일 파일이며 주로 컴파일된 .class 파일이 들어있다. 이 .class 파일들은 Java 애플리케이션의 실행을 위해 필요한 바이트 코드가 담겨 있다
- jar파일은 단일 파일에 코드를 저장하므로 Java library를 jar 형식으로 쉽게 배포할 수 있다.
- 실제로 gradle, maven을 통한 프로젝트의 의존성을 다운로드 받으면 수많은 jar파일들이 의존성에 포함됨
- JVM동작에서 클래스 로더가 로딩을 할 때 rt.jar 파일을 포함하여 JVM 을 구동시키기 위한 가장 필수적인 라이브러리의 클래스들을 JVM 에 탑재 했었다.
- 최신Java 버전에서는 rt.jar 파일을 사용하지 않는다.
- rt.jar는 이전 Java 버전에서 사용되었던 개념으로, 최신 Java 버전에서는 모듈 시스템이나 클래스패스를 통해 필요한 라이브러리를 로딩 한다…
스프링 부트의 주요 특징 2 : 라이브러리 묶음 제공
- 빌드 구성을 단순화 하는 스프링 부트 스타터를 제공
- 이는 개발자가 특정 기능을 추가할 때 필요한 의존성을 간편하게 설정할 수 있게 해줌
- 예를 들어, 웹 애플리케이션을 개발할 때는 spring-boot-starter-web 스타터를 사용하여 필요한 웹 관련 라이브러리들을 한번에 추가 (MVC, 내장 톰캣 등 포함)
스프링 부트의 주요 특징 2 : XML 설정을 하지 않고 자바 코드로 모두 작성
- 스프링 부트는 어노테이션 기반의 구성을 선호하며, XML 설정 파일을 대신하여 자바 코드로 모든 구성을 할 수 있도록 지원. 이는 더 간결하고 유연한 설정을 가능
스프링 부트의 주요 특징 3 : jar를 이용해서 자바 옵션만으로도 배포가 가능
- 스프링 부트 애플리케이션은 실행 가능한 jar 파일 형태로 패키징. 따라서 단순히 JAR 파일을 배포하고 java 명령어로 실행할 수 있다. 배포와 실행이 매우 간단
- 자바 옵션
- 자바 옵션(Java options)은 Java 프로그램을 실행할 때 JVM(Java Virtual Machine)의 동작을 제어하고 구성하기 위한 설정.
- 이러한 옵션들은 java 명령어를 통해 전달되며, 프로그램의 실행 환경을 조절하고 최적화하는 데 사용
- 예를 들어, 아래와 같이 java 명령어를 사용하여 자바 프로그램을 실행할 때 옵션을 전달할 수 있다
- 이렇게 전달된 옵션들은 java 명령어를 통해 JVM에 전달되어 JVM의 동작을 제어하고 프로그램의 실행 환경을 조절
java -Xmx512m -Dfile.encoding=UTF-8 -jar yourfile.jar
// -Xmx512m: JVM이 사용할 최대 힙 메모리 크기를 512MB로 설정
// -Dfile.encoding=UTF-8: 시스템 속성 중 file.encoding을 UTF-8로 설정
// -jar yourfile.jar: 실행할 JAR 파일을 지정
- java 명령어? java.exe ?
- java.exe와 java 명령어는 실제로 동일한 것을 가리킨다.
- java.exe는 윈도우 운영 체제에서 Java 프로그램을 실행하기 위한 실행 파일이며, 명령줄에서 사용할 수 있도록 java라는 명령어로 제공
- 일반적으로 윈도우에서는 java.exe를 사용하여 Java 프로그램을 실행하며, 명령줄에서는 java라는 명령어를 입력하여 java.exe를 실행
- 리눅스나 맥 OS 등의 운영 체제에서는 java 명령어만 사용하여 Java 프로그램을 실행
스프링 부트의 주요 특징 4 : 스프링 액츄에이터 제공
- 스프링 액츄에이터는 스프링 부트 애플리케이션의 모니터링과 관리를 위한 기능을 제공
- 이를 통해 애플리케이션의 상태를 확인하고, 메트릭 데이터를 수집하며, 애플리케이션을 다양한 관점에서 관리