728x90
반응형
스프링 부트에 대해 기능별로는 검색하면 나오는 정보가 많지만 전체적인 환경을 세팅하는게 생각보다 찾기 힘들었다.
한 달동안 본 강의를 토대로 내 입맛대로 환경세팅을 해보기로 했다.
1. Java 11, IntelliJ 설치
https://www.oracle.com/java/technologies/downloads/#java11-mac
https://www.jetbrains.com/idea/download/#section=mac
2. H2 Database 설치
해당 경로로 이동하여 권한 설정 ( /bin )
$ chmod 755 build.sh
실행
$ ./h2.sh
home 경로에 test.mv.db 파일 생성 확인
2. 프로젝트 생성
( Dependencies 는 프로젝트의 환경에 맞게 설정한다. )
3. Annotation Processing 설정
4. build.gradle 설정
plugins {
id 'org.springframework.boot' version '2.7.4'
id 'io.spring.dependency-management' version '1.0.14.RELEASE'
id 'java'
}
group = 'web'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
// Querydsl
ext["hibernate.version"] = "5.6.5.Final"
clean {
delete file('src/main/generated')
}
dependencies {
// start.spring.io setting
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// Querydsl
implementation 'com.querydsl:querydsl-jpa'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jpa"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
// app
implementation 'org.springframework.boot:spring-boot-starter-aop'
// 테스트에서 lombok 사용
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
//redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
// 강제지연로딩
//implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5'
// SQL 실행 파라미터를 로그로 남긴다.
//implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.7'
}
tasks.named('test') {
useJUnitPlatform()
}
5. application.properties 설정
#port
server.port=8083
spring.profiles.active=local
#Database
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.hikari.connection-timeout= 3000
spring.datasource.hikari.validation-timeout= 3000
spring.datasource.hikari.minimum-idle= 5
spring.datasource.hikari.max-lifetime= 240000
spring.datasource.hikari.maximum-pool-size= 20
# 자동 카멜 표기법 x
#spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# ?? ????? validate or none
spring.jpa.hibernate.ddl-auto=create
# Hibernate jpa log (ddl-auto, ?? jpa ?)
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true
# JPA SQL
# logging.level.org.hibernate.SQL=DEBUG
# sql parameter log
# logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# JPA Transaction log
# logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG
# logging.level.org.hibernate.resource.transaction=DEBUG
# Interceptor transaction log
# logging.level.org.springframework.transaction.interceptor=TRACE
# logging.level.org.springframework.jdbc.datasource.DataSourceTransactionManager= DEBUG
# JPQL log(queryDSL)
# spring.jpa.properties.hibernate.use_sql_comments=TRUE
# Page_batch_size
# spring.data.web.pageable.default-page-size=20
# spring.data.web.pageable.max-page-size=2000
maraiDB 설정
spring.datasource.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3307/leafCat
spring.datasource.username=root
spring.datasource.password=root
6. 로그 파일 저장
/src/main/resources/logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
[Layout]
%m : 로그내용이 출력
%p : trace > debug > info > warn > error 등의 priority 출력
%r : 어플리케이션이 시작되어 로깅이벤트가 발생하는 시점까지의 경과시간을 밀리세컨드로 출력
%c : 예) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c가 출력됩니다.
%n : 플랫폼 종속적인 개행문자가 출력된다. \r\n 또는 \n 일것이다
%d : 로깅이벤트가 일어나 날짜 출력 ( 프로그램의 실행속도를 느리게 한다.)
예) %d{HH:mm:ss} 또는 %d{dd MMMM yyyy HH:mm:ss}
%C : 호출자의 클래스명 출력
예) 클래스구조가 org.apache.xyz.SomeClass 처럼 되어있다면 %C{2}는 xyz.SomeClass 가 출력됩니다
%M : 로깅이 발생한 method 이름을 나타냅니다.
%F : 로깅이 발생한 프로그램 파일명을 나타냅니다.
%l : 로깅이 발생한 caller의 정보를 나타냅니다
%L : 로깅이 발생한 caller의 라인수를 나타냅니다
%x : 로깅이 발생한 thread와 관련된 NDC(nested diagnostic context)를 출력합니다.
%X : 로깅이 발생한 thread와 관련된 MDC(mapped diagnostic context)를 출력합니다.
%% : % 표시를 출력하기 위해 사용한다.
%t : 로그이벤트가 발생된 쓰레드의 이름을 출력합니다
-->
<configuration scan="true" scanPeriod="30 seconds">
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>logs\%d{yyyy-MM}\%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%-5level] - %msg%n</Pattern>
</layout>
</appender>
<!-- Loggers -->
<!-- <logger name="org.apache.catalina" level="ERROR">
</logger>
<logger name="org.apache.commons" level="ERROR">
</logger>
<logger name="org.springframework" level="DEBUG" >
</logger>
<logger name="egovframework.*" level="DEBUG">
</logger>
<logger name="java.sql" level="DEBUG">
</logger>
<logger name="org.mybatis.spring" level="DEBUG">
</logger>
<logger name="egovframework.sqlmappers" level="TRACE">
</logger> -->
<root level="INFO">
<appender-ref ref="ROLLING"/>
<appender-ref ref="STDOUT" />
</root>
</configuration>
728x90
반응형
'Back-End > Spring Boot' 카테고리의 다른 글
Sping Boot | Backend Project | CRUD with SpringDataJPA (0) | 2022.09.26 |
---|---|
Sping Boot | Backend Project | Module (1) | 2022.09.26 |
Spring Boot | 지식 | API 기본 매핑 (0) | 2022.08.30 |
Spring Boot | 지식 | Response 편의 메소드 (0) | 2022.08.29 |
Spring Boot | 지식 | Request Param 데이터 조회 (0) | 2022.08.29 |