2023-02-20

1.프로젝트 생성

image-20230220224528817

https://start.spring.io/ 를 통해 프로젝트 설정Dependencies를 추가후 생성한다.

Project

  • 빌드 관리 툴 선택(Maven, Gradle - Groovy, Gradle-Kotlin)

Language

  • 언어 설정 (Java, Kotlin, Groovy)

Spring Boot

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

image-20230221234411882

SDK: Java 11 (start.spring.io에서 설정한 Java 버전)

Project Settings -> Modules -> Language level

image-20230221234850880

Language Level: Java 11 (start.spring.io에서 설정한 Java 버전)

Platform Settings -> SDKs -> JDK home path

image-20230221235311536

JDK home path: Java 11 (start.spring.io에서 설정한 Java 버전) 설치 경로

Settings (Ctrl + Alt + S)

Build, Execution, Deplyment -> Build Tools -> Gradle

image-20230221232519153

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

image-20230221233023287

Enable annotation processing 체크

롬복(Lombok)과 같은 외부 어노테이션 라이브러리가 컴파일 시 문제없이 작동하도록 설정하기 위해 어노테이션 프로세싱(Annotation Processing)를 활성화해줘야 한다.

3.스프링 부트 서버 실행 시 오류

image-20230221182937649

build.gradle 내에 JPA 라이브러리 (implementation ‘org.springframework.boot:spring-boot-starter-data-jpa’)가 추가 된 상태에서 application.properties 또는 application.ymlDatasource 설정하지 않으면 서버 실행 시 위와 같이 오류가 발생한다.

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의 좋은 점

  1. 일단, 한 눈에 보기에도 가독성이 좋다.
  2. 불필요한 코드의 반복을 피할 수 있다.
  3. 계층 구조로 이해하기 쉽고 쓰기 편하다.

Datasource를 추가를 했으면 아래와 같이 스프링 부트 서버가 잘작동된다.

image-20230221182703675

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 페이지로 이동한다.

image-20230202152109397

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로 이동한다.

image-20230202152109397

6. 오류 발생 원인&해결

Cause: invalid sourc release: 11

image-20230221225206164

발생상황
start.spring.io에서 자바 버전을 11로 하고 스프링 부트 프로젝트 build하는 과정에서 오류 발생.

발생원인
gradle의 jvm설정이 11이하 버전인데 build.gradle에서 sourceCompatibility의 설정이 11로 되어 있어서 발생.

해결방안
image-20230221231511798{: .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)

댓글남기기