[SpringBoot] 스프링부트 프로젝트 만들기 및 설정하기~인텔리제이로 생성~(생성 스프링부트3.25 )_IntelliJ IDEA 2024.1 JDK17 spring-boot--++

0. 개발환경

- 인텔리제이 IDEA 2024.1

- JDK : coretto-17

- Java : 17

- Spring : Spring-boot 3.25 


1. 스프링 부트 프로젝트 생성 2가지 방법 및 설정 방법

① 스프링 홈페이지에서 프로젝트 생성하기

https://start.spring.io/ 

* 여러 툴에서 불러올 수 있음

https://spring.io/tools

* 공식 지원 툴 


- 위 사진처럼 세팅했음

- 아래 GENERATE 버튼 선택 시 다운로드됨 


* 인텔리제이에서 프로젝트 import 하는법 

- 다운받은 프로젝트.zip 파일 압축풀기 >> 프로젝트 경로로 이동시킴

  ( 프로젝트 경로 : C:\Users\{user name}\IdeaProjects\프로젝트명 )

- 인텔리제이에서 Open >> 프로젝트 경로 지정


② 인텔리제이에서 프로젝트 생성하기

- NEW >> Project... 

- Spring Boot (Spring Initializr)

    Name : project name 

    Language : Java    

    Type : Gradle - Groovy

    JDK : coretto-17

    Java : 17

>> NEXT 

    (아래내용 검색하여 체크박스 선택 )

    Spring Boot DevTools 

    Lombock

    Spring Web

    Thymeleaf

    Spring Data JPA

    MariaDB 

>> Create


- 빌드될때까지 기다리기 


③ 인텔리제이에서 프로젝트 설정하기

* Run 설정

- TIP 에서 윈도우 방화벽 나오면 실행하기 


- 우측상단에 RUN부분에 실행config가 뜨는지 확인


- 안뜨면 /src/main/java/pakeage name/pakeage nameApplication.java 파일 오픈

>> 우클릭 Run


- Run 설정 >> 우측상단 실행 아이콘선택 >> Edit RunConfigurations 

-- Modify options 선택 

-- On frame deactivation / On 'Update' action > Update classes and resources 로 변경






* Application 설정

-- 경로 /src/main/resources/

- application.properties 혹은 .yml 파일 (설정파일) 수정

( #서버 포트 8080 사용 중일 시  일시 변경 server.port =8090 )

spring.application.name=b01

server.port=8090

# dataSource setting
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/webdb?serverTimezone=Asia/Seoul
spring.datasource.username=ID
spring.datasource.password=PASSWORD

# Log4j2 add setting
logging.level.org.springframework=info
logging.level.org.zerock=debug

# DDL 설정 방식 - none, create, create-drop, validate, update
spring.jpa.hibernate.ddl-auto=update
#sql-format 형식으로 출력
spring.jpa.properties.hibernate.format_sql=true
#sql 처리 내용을 출력
spring.jpa.show-sql=true


* Gradle 설정

- build.gradle 파일에 lombock test라이브러리 추가

plugins {
id 'java'
id 'org.springframework.boot' version '3.2.5'
id 'io.spring.dependency-management' version '1.1.4'
}

group = 'org.zerock'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '17'
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.mysql:mysql-connector-j'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
//lombock setting - test에서 사용할 수 있게 설정
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
useJUnitPlatform()
}


* 테스트 설정

- 데이터소스 테스트 JAVA 파일 생성 

-- 경로 /src/test/java/pakeage name/

    pakeage name에 java 파일 생성 

DataSouceTests.java >> 테스트실행 (클래스 왼쪽에 실행버튼 선택)

package org.zerock.b01;

import lombok.Cleanup;
import lombok.extern.log4j.Log4j2;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

@Log4j2
@SpringBootTest
public class DataSouceTests {

@Autowired
private DataSource dataSource;

@Test
public void testConnetion() throws SQLException {
@Cleanup //알아서 종료
Connection conn = dataSource.getConnection();
log.info(conn);
Assertions.
assertNotNull(conn);
}

}


* 컨트롤러 설정

- 컨트롤러 패키지 및 파일 생성 

-- 경로 /src/main/java/pakeage name/

    pakeage name에 controller 폴더(패키지) 생성 : /src/main/java/pakeage name/controller/

    controller 패키지안에 SampleController.java 파일 생성 

- SampleController.java 

package org.zerock.b01.controller;

import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

@Controller
@Log4j2
public class SampleController {

@GetMapping("/hello")
public void hello(Model model) {

log.info("hello.............");
model.addAttribute("msg", "Hello World");
}

}


* View 설정

- html 파일 생성 

-- 경로 /src/main/resources/templates/

    templates에 html 파일 생성 

- hello.html 

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<!--중요 xml 네임스페이스 설정 의미는 thymeleaf 사용하겠습니다. th: 로 모든 기능을 사용-->
<head>
<meta charset="UTF-8">
<title>hello</title>
</head>
<body>
<h1 th:text="${msg}"></h1>
</body>
</html>


* 실행 

- 우측상단 실행버튼 선택 후 >> 브라우저에서 접속

http://localhost:8090/hello 


* JSON 설정 


- 생성한 컨트롤러 패키지에 파일 추가 생성

-- 경로 - /src/main/java/pakeage name/controller/

    controller 패키지안에 SampleController.java 파일 생성 

- SampleController.java 

package org.zerock.b01.controller;


import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Log4j2
public class SampleJSONController {
@GetMapping("/helloArr")
public String[] helloArr() {
log.info("helloArr");
return new String[] {"AAA", "BBB","CCC"};
}
}


* 실행 

- 우측상단 실행버튼 선택 후 >> 브라우저에서 접속

http://localhost:8090/helloArr


- 실행화면에서 크롬 f12 입력 하여 개발자도구 열기 

- Network Tab 에서 Name 영역에 Element ( helloArr ) 선택 

- 나타나지않으면 우측팝업창 기준 왼쪽 상단 빨간색 동그라이 선택 >> 자동으로 리로딩됨




- 참고

https://thread-beech-c05.notion.site/0425-ed7c57d709c8473598633356ceb4c3f7

댓글

T O P