if (study)/Spring


인프런에서 백기선 님의 스프링 부트 개념과 활용을 수강하고 개인적으로 공부한 내용을 정리한 글입니다. JAR(Java Archive) JAR는 ZIP 파일 포맷으로 이루어진 압축 파일 포맷이다. 여러 개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아준다. 즉 JAR는 자바 애플리케이션을 구성하는 것들을 단일 파일로 묶어 압축한 형태의 파일로, 한 차례의 요청으로 애플리케이션 전체를 다운로드할 수 있게 해 준다. 어플리케이션을 배포하거나 docker image로 만들 때는 JAR 패키지로 패키징하여 실행하는 방법이 유용하게 사용된다. 실행 가능한 Jar 파일(Executable Jar) 만들고 실행하기 Jar 파일 생성하기 target 하위를..


인프런에서 백기선님의 스프링 부트 개념과 활용을 수강하고 개인적으로 공부한 내용을 정리한 글입니다. HTTPS 적용하기 HTTP는 평문으로 통신을 하기 때문에 보안상의 문제가 있다. HTTPS는 HTTP 통신에 암호화를 적용해 보안이 강화된 프로토콜이다. keystore는 암호화/복호화와 디지털 서명에 필요한 key, certificate를 추상화해서 제공하는 Java의 인터페이스다. keytool은 keystore 기반으로 인증서와 key를 관리할 수 있는 유틸리티로 JDK에 포함되어 있다. keytool -genkey 명령어로 keystore를 만들어보자. keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keysto..


인프런에서 백기선님의 스프링 부트 개념과 활용을 수강하고 개인적으로 공부한 내용을 정리한 글입니다. 스프링 부트 ≠ 서버 Spring 프레임워크를 쉽게 사용할 수 있게해주는 Tool일 뿐, 스프링 부트 자체는 웹 서버가 아니다. 내장 서블릿 컨테이너 개요 spring-boot-starter-web을 사용한 프로젝트엔 톰캣(Tomcat)이 기본적으로 내장되어 있다. 톰캣은 데이터를 동적으로 처리하기 위한 서블릿 컨테이너로, JSP, 서블릿 처리, HTTP 요청과 응답 등을 처리한다. 자동 설정이 없다고 가정하고 Servlet을 만들어서 톰캣에 등록해보자. @SpringBootApplication public class Application { public static void main(String[] ar..


인프런에서 백기선님의 스프링 부트 개념과 활용을 수강하고 개인적으로 공부한 내용을 정리한 글입니다. 자동 설정의 개요 스프링 프로젝트가 실행되는 지점인 메인 어플리케이션의 기본적인 형태는 다음과 같다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 여기서 @SpringBootApplication는 세개의 어노테이션을 하나로 합쳐놓은 형태다. @SpringBootConfiguration @ComponentScan @EnableAutoConfiguration 스프링 부트 어플리케이션은 Bean을 두 단..


인프런에서 백기선님의 스프링 부트 개념과 활용을 수강하고 개인적으로 공부한 내용을 정리한 글입니다. 의존성 관리 처음 프로젝트를 생성하고 pom.xml에서 설정을 할 때 아래와 같은 의존성을 추가했었다. org.springframework.boot spring-boot-starter-parent 2.0.3.RELEASE org.springframework.boot spring-boot-starter-web spring-boot-starter에서 제공하는 라이브러리들의 버전을 따로 명시하지 않았는데도 적절한 버전을 가져오고 있다. 이건 스프링 부트에서 제공하는 의존성 관리 기능 덕분이다. parent인 spring-boot-starter-parent.pom에 들어가보면 parent가 또 들어있다. 한번 더..