Spring Boot 프로젝트 생성
2023-02-20
1.프로젝트 생성
https://start.spring.io/ 를 통해 프로젝트 설정 및 Dependencies를 추가후 생성한다.
Project
- 빌드 관리 툴 선택(Maven, Gradle - Groovy, Gradle-Kotlin)
Language
- 언어 설정 (Java, Kotlin, Groovy)
Spring Boot
- 스프링 부트 버전 설정 (2.7.8)
- SNAPSHOT: 아직 개발 단계
- 기타 버젼
(https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web)
Project Metadata
- Group : 보통 기업의 도메인 명 (예)com.naver
- Artifact : 프로젝트 이름
- Name : 이름
- Description : 프로젝트 설명
- Package name : 패키지 이름
- Packaging : 배포 형태 (war, jar)
- Java : 자바 버전 선택 (19, 17, 11, 8)
Dependancies
-
Spring Web
스프링 기반의 웹 애플리케이션을 개발하는 데에 필요한 라이브러리들이 자동으로 설정 -
Spring Boot Devtools
Spring Boot에서 코드가 수정되면 어플리케이션을 재실행해야 되는 불편한 점을 해결할 수 있도록 제공되는 모듈 -
Thymeleaf
뷰 템플릿 엔진으로 컨트롤러가 전달하는 데이터를 이용하여 동적으로 화면을 구성 -
Spring Data JPA
JPA(Java Persistence API)를 사용하기 편하도록 만들어놓은 모듈 -
Lombok
여러가지 @어노테이션을 제공하고 이를 기반으로 반복 소스코드를 컴파일 과정에서 생성해주는 방식으로 동작하는 라이브러리 -
Mysql Driver
데이터베이스 정보를 저장하는 애플리케이션
2.Intellij 환경 설정 (Ctrl + Alt + S)
Project Structure (Ctrl + Alt + Shift + S)
Project Settings -> Project -> SDK
SDK: Java 11 (start.spring.io에서 설정한 Java 버전)
Project Settings -> Modules -> Language level
Language Level: Java 11 (start.spring.io에서 설정한 Java 버전)
Platform Settings -> SDKs -> JDK home path
JDK home path: Java 11 (start.spring.io에서 설정한 Java 버전) 설치 경로
Settings (Ctrl + Alt + S)
Build, Execution, Deplyment -> Build Tools -> Gradle
Build and run using: Gradle(Default) -> IntelliJ IDEA
Run tests using: Gradle(Default) -> IntelliJ IDEA
Gradle JVM: Java 11 (start.spring.io에서 설정한 Java 버전)
Build, Execution, Deplyment -> Compiler -> Annotation Processors
Enable annotation processing 체크
롬복(Lombok)과 같은 외부 어노테이션 라이브러리가 컴파일 시 문제없이 작동하도록 설정하기 위해 어노테이션 프로세싱(Annotation Processing)를 활성화해줘야 한다.
3.스프링 부트 서버 실행 시 오류
build.gradle 내에 JPA 라이브러리 (implementation ‘org.springframework.boot:spring-boot-starter-data-jpa’)가 추가 된 상태에서 application.properties 또는 application.yml에 Datasource 설정하지 않으면 서버 실행 시 위와 같이 오류가 발생한다.
4.application.properties -> application.yml 변경 및 세팅
src/main/resources/application.properties
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/DB스키마명?serverTimezone=Asia/Seoul
username: /*DB아이디*/
password: /*DB패스워드 */
mvc:
view:
prefix: /templates/
suffix: .html
jpa:
hibernate:
ddl-auto: update #create update none
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
show-sql: true
application.properties -> application.yml로 변경 후 Server, Datasource, View, JPA 설정을 한다.
properties보다 yml의 좋은 점
- 일단, 한 눈에 보기에도 가독성이 좋다.
- 불필요한 코드의 반복을 피할 수 있다.
- 계층 구조로 이해하기 쉽고 쓰기 편하다.
Datasource를 추가를 했으면 아래와 같이 스프링 부트 서버가 잘작동된다.
5. Index.hml & HomeController & home.html 설정
Index.html
src/main/resources/static/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Index 페이지</title>
</head>
<body>
<h1>Index 페이지 입니다.</h1>
</body>
</html>
index.html 생성
index.html 페이지는 방문자가 사이트를 요청할 때 다른 페이지가 지정되지 않은 경우 웹 사이트에 표시된 기본 페이지에 사용되는 가장 일반적인 이름이다.
스프링 부트 서버 정상 작동 후 인터넷 창에 localhost:8080 또는 127.0.0.1:8080을 검색하면 아래와 같이 Index.html 페이지로 이동한다.
HomeController.java
src/main/java/com/first/controller/HomeController
@Controller
public class HomeController {
@GetMapping(value = "/home")
public String Home(){
return "home";
}
}
home.html
src/main/resources/templates/home.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Home 페이지 입니다.</h1>
</body>
</html>
HomeController, home.html 생성
@Controller
해당 어노테이션이 적용된 클래스는 “Controller“임을 나타나고, bean으로 등록되며 해당 클래스가 Controller로 사용됨을 Spring Framework에 알린다.
@RequestMapping
해당 어노테이션이 선언된 클래스의 모든 메소드가 하나의 요청에 대한 처리를 할경우 사용한다. 예를들어, “/home” 요청 url에 대해 해당 메소드에서 처리해야 되는 경우 사용된다.
public String Home(){ return “index”; }
Home() 메소드의 반환값이 String 이면 return 값의 View 템플릿으로 이동한다.
기본설정으로 src -> main -> resources -> templates 내에 home.html로 이동한다.
6. 오류 발생 원인&해결
Cause: invalid sourc release: 11
발생상황
start.spring.io에서 자바 버전을 11로 하고 스프링 부트 프로젝트 build하는 과정에서 오류 발생.
발생원인
gradle의 jvm설정이 11이하 버전인데 build.gradle에서 sourceCompatibility의 설정이 11로 되어 있어서 발생.
해결방안{: .align1.sourceCompatibility 값을 gradle의 설정 jvm값으로 변경한다.
setting -> build, execution, deployment -> build tools -> maven -> gradle -> gradle projects -> gradle jvm
2.<gradle jvm설정을 Java 11로 올린다.
6.참조
[Spring] Initializr로 스프링 부트 기반 프로젝트 생성)
[Intelij] 어노테이션 프로세싱 활성화하기
[Spring Boot] 스프링부트 application.yml파일 설정하기 (yml VS properties)
[SpringBoot] Cause: invalid source release: 11 (Java version 떄문에 error)
댓글남기기