티스토리 뷰
들어가기 앞서.... 이 글은 제가 프로젝트를 생성할 때 필요한 것들을 정리하기 위해 작성한 거라서 도움이 안 될 수도 있습니다... 보통 프로젝트를 생성하고 빌드하는 과정까지 설명이 있는데 이 글은 없습니다 ㅎㅎ
● 개발환경
- IntelliJ 2019.02
- Java 8
- SpringBoot 2.5.7
- Gradle
● 라이브러리
- JPA
- Lombok
- Spring Boot DevTools
- H2 Database
아래 사이트에서 설정
Generate click
IntelliJ로 프로젝트를 만들어도 좋지만 전 여기서 만드는 게 더 편해서 start.sping.io 사이트에서 진행하겠습니다.
프로젝트 폴더 안으로 가서 intellij를 실행시키세요!!
실행 후 Build Succesful 이 뜬다면 성공입니다.
간단명료 차이점 시작!!
Maven vs Gradle (빌드 관리 도구)
빌드 관리 도구 :
- 프로젝트 내에 필요한 각종 xml, properties, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징 해주는 빌드 과정 빌드 자동화 도구
- 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램
- 애플리케이션 개발 시 개발에 필요한 외부 라이브러리들을 다운로드하고 개발해야 하는 경우가 많다 이때 각 라이브로 리들을 다운로드할 필요 없이 빌드 도구 설정 파일에 필요한 라이브러리 종류와 버전들을 명시 해당 설정들을 자동으로 다운로드 간편하게 관리해줌
Maven
- java용 프로젝트 관리 도구 Apache의 Ant 대안으로 만들어짐
- 빌드 중인 프로젝트, 빌드 순서, 다양한 외부 라이브러리 종속성 관계를 pon.xml파일에 명시한다.
- 외부 저장소에서 필요한 라이브러리와 플러그인들을 다운로드, 그 후 로컬 시스템의 캐시에 모두 저장한다.
- 고정적이고 선형적인 단계의 모델을 기반으로 한다.
Gradle
- Apacahe Maven과 Apache Ant에서 볼 수 있는 개념들을 사용하는 대안으로써 나온 프로젝트 빌드 관리 툴
- Gradle 프로젝트의 어느 부분이 업데이트되었는지 알기 때문에, 빌드에 점진적으로 추가할 수 있다.
- 업데이트가 반영된 빌드의 부분은 더 이상 재실행되지 않는다. 빌드 시간 훨씬 단축
- 작업 의존성 그래프를 기반
👍 Gradle 사용 이유
먼저 가장 큰 이유는 Maven에 pom.xml 코드에 비해 훨씬 가독성이 좋아진다. 만약 Maven에서 라이브러리 하나 추가 시 Junit5를 추가한다고 가정하면 10줄 이상이다 하지만 Gradle 은 한 줄.... 그래서 간결하고 가독성이 좋다 Gradle 쓰자
위에서 말했듯이 빌드 시간이 단축된다. 예를 들어 빌드 설정 규모가 엄청 커진다면 빌드 시간의 차이도 Maven에 비해 훨씬 빠르다. 그 밖에 많은 이유가 있지만 이 정도로도 쓸 이유는 충분하다.
JAR vs WAR
jar, war 모두 Java의 jar 옵션 (java -jar)을 이용해 생성된 압축 파일로, 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련 파일을 패키징 한 것.
JAR (Java Archive)
- JAVA 애플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일
- Class (JAVA리소스, 속성 파일), 라이브러리 파일을 포함함
- JRE(JAVA Runtime Environment)만 있어도 실행 가능함 (java -jar 프로젝트 네임. jar)
WAR (Web Application Archive)
- Servlet / Jsp 컨테이너에 배치할 수 있는 웹 애플리케이션(Web Application) 압축파일 포맷
- 웹 관련 자원을 포함함 (JSP, Servlet, JAR, Class, XML, HTML, Javascript)
- 사전 정의된 구조를 사용함 (WEB-INF, META-INF)
- 별도의 웹서버(WEB) or 웹 컨테이너(WAS) 필요
- 즉, JAR파일의 일종으로 웹 애플리케이션 전체를 패키징 하기 위한 JAR 파일이다.
Java 8 vs 11
java 8 - 2014년
- 오라클 인수 후 첫 번째 버전
- 2개 버전으로 나뉨(Oracle JDK, OpenJDK)
- Lambda, new Date and Time API(LocalDateTime, …)
- interface default method
- Optional
- PermGen Area 제거
java 11 - 2018년
- Oracle JDK와 OpenJDK 통합
- Oracle JDK가 구독형 유료 모델로 전환
- 서드파티 JDK 도의 이전 필요
- lambda 지역변수 사용법 변경
Defendencies
필요한 라이브러리들을 의존성을 추가해서 사용할 수 있는데 제가 사용하는 기본적인 세팅이라 이 정도만 추가하겠습니다.
Lombok
롬복은 복잡하고 반복되는 코드가 줄어듦으로써 코드의 가독성을 높일 수 있고 코딩 생산성 또한 높일 수 있습니다.
[SpringBoot] - 롬복(Lombock) 어노테이션 알고 쓰기
Spring Boot Devtools
개발 편의를 제공하는 LiveReload를 적용해주시면 좋습니다.
매번 서버를 껐다 켤 필요가 없기 때문이죠.
'Spring Boot' 카테고리의 다른 글
Spring Boot + Redis 적용 (2) | 2022.03.22 |
---|---|
JUnit5 Test Code 작성 (0) | 2021.12.17 |
롬복(Lombock) 어노테이션 (0) | 2021.05.06 |
Vue.js ,Springboot 로 구현하는 다중 파일 업로드 심화 (0) | 2021.05.04 |
Spring boot File upload (1) | 2021.03.09 |