728x90
spring 프로젝트 생성 (Intellij, Gradle)
- java 17
- gradle
- 3.3.0
의존성 추가
- Spring Web: 가장 기본적으로 Spring MVC기반의 REST API 혹은 웹 페이지 반환을 위한 Tomcat서버
- Lombok: 불필요한 java 코드 작성을 최소화하기 위한 어노테이션 기반 코드 자동 생성기
- Thymeleaf: Spring에서 웹 페이지를 만들어 클라이언트에게 서빙하려 사용하는 서버사이드 템플릿 엔진
JDK(Java Development Kit) 설치 : 모든 개발 및 실행의 근간인 JDK
JDK 버전은 상관없는데, 실습에서 사용하고자 하는 language level 이 17이면 된다.
Gradle구동을 위한 자바 JDK 자바 버전을 동일하게 설정
Intellij에는 2개의 자바 어플리케이션이 있다.
- 내가 만든 Java Application
- Gradle: Groovy-based DSL Build Automation Tool(Javascript 에서의 NPM 포지션)
그래서 intellij에 자바 버전설정이 2개 필요함.
- 내가 만든 Java Applicatoin 구동을 위한 자바(JVM) 버전
- Gradle 구동을 위한 (정확히는 Gradle 기반이 되는 Groovy 구동을 위한) 자바(JVM) 버전
Gradle 구동을 위한 자바 버전 확인
만약 gradle자바 버전과 JDK 자바 버전이 다르면 Gradle Restart가 안된다.
Gradle Restart: build.gradle 내 설정된 라이브러리 설치 및 프로젝트 세팅
- build.gradle: 라이브러리 의존성, 프로젝트 세부 설정
- implementation 이나 runtimeOnly 같은 옵션이 존재함
- Gradle Restart: 라이브러리 설치
- application(.properties | .yml | .yaml) : 라이브러리 설정
프론트엔드(Javascript)는 라이브러리마다 각자 다른 config 파일로 관리되지만 프리티어, 린트, `tsconfig` 등 `tsconfig.json`, `jsconfig.json`, `.prettierrc`, `.eslintrc.cjs` 백엔드(Spring)는 모두 `application(.properties|.yml|.yaml)` 내 관리
Lombok
spring을 사용함에 있어서, 크게 2개 타입의 Annotation을 접할 것이다.
Lombok 원리
컴파일 시점에 Annotation Processor를 사용하여 Abstract syntax Tree 조작
- java 컴파일 과정(`.java` -> `.class`) 중 Tokenizer -> Lexer -> Parser -> AST
- 문법(구문)을 분류하여 AST (Abstract Syntax Tree) 생성
- AST (Abstarct Syntax Tree) 기반으로 Bytecodes로 모두 변환 완료
- HTML DOM과 비슷하다. 사용한 모든 문법을 트리로 만들어서 바이너리 코드로 전환하는 것
- lombok은 이 AST (Abstract Syntax Tree)에 원하는 함수 주입(Bytecode 에 주입하는 것이 아니라)
- lombok에 의해 수정된 AST 는 최종 바이너리코드로 생성된다.
lombok어노테이션이 붙으면 AST 트리에 주입해줘야 한다는 것을 Intellij에게 알려워야한다. -> annotation processing 설정으로 알려주기
실행 설정 Run/Debug configrations
Java / Spring 개발에 앞서, 개발할때마다 매번 서버를 실행(Run) 혹은 디버깅(Debug) 수행 -> 이에 설정 필요
Interllij Ultimate Edition(유료버전) 에서 Spring Boot를 구동하면 해당 프로젝트가 Spring Boot 여부를 파악하여 실행 및 디버깅 자동 세팅
무료 버전을 사용하다면 해당 글을 참고하자
Auto Format on Save 개별 설정
Intellij에서는 Linter는 따로 존재하지 않고, Formatter는 개별 설정 파일을 주입해야한다.
- React에서는 Airbnb 설정이 있다면, Java에는 Google 설정이 있다.
728x90
'ASAC 웹 풀스택' 카테고리의 다른 글
Java 기본 문법 및 JVM 구성(4) - JVM (0) | 2024.09.28 |
---|---|
Java 기본 문법 및 JVM 구성(3) - ⭐️Exception 예외 처리 (3) | 2024.09.27 |
Java 기본 문법 및 JVM 구성(1) - Java동작 원리 (0) | 2024.09.25 |
React 의 특장점, 렌더 라이프사이클 및 Hook(7) - immer(리렌더링 이슈 해결) (1) | 2024.09.22 |
React 의 특장점, 렌더 라이프사이클 및 Hook(6) - Ref (0) | 2024.09.22 |