Project/Todo

[Spring Boot] 프로젝트 만들기 - spring initializr, build.gradle, application.properties

lakelight 2022. 7. 7. 23:19
728x90
반응형

spring initializr을 통한 프로젝트 만들기

spring initializr
https://start.spring.io/

Lombok
자바 라이브러리로 클래스 생성시 반복되는 getter, setter, equals, toString 등의 메서드 작성 코드를 어노테이션 기반으로 자동 생성해주는 라이브러리 입니다.
* 코드의 가독성을 높이고 개발의 생산성을 높일 수 있습니다. *

Spring Web
Spring MVC를 사용하여 RESTful을 포함한 웹 애플리케이션을 빌드합니다. Apache Tomcat을 기본 내장 컨테이너로 사용합니다.

Spring Security
Spring 애플리케이션을 위한 사용자 정의 가능한 인증 및 액세스 제어 프레임 워크로, Member 테이블의 비밀번호 필드를 암호화 하기 위해 사용합니다.

Spring Data JPA
Spring Data 및 Hibernate를 사용하는 Java Persistence API로 SQL 저장소에 데이터를 유지합니다.

MySQL Driver
MySQL JDBC 및 R2DBC 드라이버입니다.

추가적으로 동적 쿼리를 위한 QueryDSL과 로깅을 위한 slf4j를 추가할 것입니다.
두 라이브러리는 Spring에서 관리하지 않기 때문에 직접 코드를 추가할 것입니다.

이렇게 설정을 하고 다운로드 받은 후 IntelliJ에서 열 수 있습니다.

IntelliJ에서 Open 후 Run한 상황

 

QueryDSL과 slf4j 설정

buildscript { //QueryDSL을 위해 추가
	ext {
		queryDslVersion = "5.0.0"
	}
}

plugins {
	id 'org.springframework.boot' version '2.7.1'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" //QueryDSL을 위해 추가
	id 'java'
}

group = 'hooyn'
version = '0.0.1-SNAPSHOT'
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-security'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation "com.querydsl:querydsl-jpa:${queryDslVersion}" //QueryDSL을 위해 추가
	implementation "com.querydsl:querydsl-apt:${queryDslVersion}" //QueryDSL을 위해 추가
	implementation('org.slf4j:jcl-over-slf4j') //slf4j을 위해 추가
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'mysql:mysql-connector-java'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testImplementation 'org.springframework.security:spring-security-test'
}

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

def querydslDir = "$buildDir/generated/querydsl" //QueryDSL을 위해 추가

querydsl { //QueryDSL을 위해 추가
	jpa = true
	querydslSourcesDir = querydslDir
}

sourceSets { //QueryDSL을 위해 추가
	main.java.srcDir querydslDir
}

compileQuerydsl{ //QueryDSL을 위해 추가
	options.annotationProcessorPath = configurations.querydsl
}

configurations { //QueryDSL을 위해 추가
	compileOnly {
		extendsFrom annotationProcessor
	}
	querydsl.extendsFrom compileClasspath
}

 

application.propertiest 설정

# MySQL에 대한 설정입니다.
spring.datasource.url=jdbc:mysql://localhost:3306/todo_db?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&serverTimezone=Asia/Seoul
spring.datasource.username=hoyun
spring.datasource.password=**********
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# create: 기존테이블 삭제 후 다시 생성합니다. (DROP + CREATE)
# create-drop: create와 같으나 종료시점에 테이블을 DROP 합니다.
# update: 변경분만 반영합니다. (운영DB에서는 사용하면 안됩니다.)
# validate: 엔티티와 테이블이 정상 매핑되었는지만 확인합니다.
# none: 사용하지 않습니다. (사실상 없는 값이지만 관례상 none이라고 합니다.)
spring.jpa.hibernate.ddl-auto=create

# Hibernate가 DB에 날리는 모든 쿼리(DDL, DML)을 보여줍니다.
spring.jpa.properties.hibernate.format_sql=true

# 콘솔 창에 출력되는 로깅 메세지를 색으로 구분해서 출력해줍니다.
spring.output.ansi.enabled=always

# 로그 메세지가 저장되는 로그 디렉터리
logging.file.path=logs

# TRACE :추적 레벨은 Debug 보다 좀더 상세한 정보를 나타냅니다.
# ERROR : 요청을 처리하는 중 문제가 발생한 경우를 나타냅니다.
# WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 나타냅니다.
# INFO : 상태변경과 같은 정보성 메시지를 나타냅니다.
# DEBUG : 프로그램을 디버깅하기 위한 정보를 지정합니다.
# TRACE : 추적 레벨은 Debug 보다 좀더 상세한 정보를 나타냅니다.
# logging.level.{패키지 경로}를 통해 로깅 레벨을 결정할 수 있습니다.
logging.level.com.tutorial.springboot=TRACE

 

한글 깨짐 현상 해결

https://dorudoru.tistory.com/2156

 

IntelliJ 한글 깨짐 해결 실패기(해결)

인텔리J로 개발하다보면 아래처럼 한글이 깨지게 되는데요. 구글을 찾아보니 자바 설정시에 File Encoding을 UTF-8로 하지 않아서 그렇다고 합니다. 업데이트) 또한 개발자 즈니씨(https://developer-zni.tis

dorudoru.tistory.com

IntelliJ를 프로그램 종료 후 재시작 하면 다시 '???' 로 변경되어 있어서 변경되는 부분에 대한 해결

https://velog.io/@ehdrms2034/Spring-Application.properties-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90

 

[Spring] Application.properties 한글깨짐

스프링 프로젝트를 구성하던 중 local,dev,real별 환경설정을 하다가 간단하게을 했는데 자꾸 한글이 깨지는 것이었다.처음에는 intellij나 slf4j에서 한글을 받아들이지 못하는구나 생각해서 다음과

velog.io

 

728x90
반응형