728x90
반응형

스프링 부트에 대해 기능별로는 검색하면 나오는 정보가 많지만 전체적인 환경을 세팅하는게 생각보다 찾기 힘들었다.

한 달동안 본 강의를 토대로 내 입맛대로 환경세팅을 해보기로 했다.

 

1. Java 11, IntelliJ 설치

https://www.oracle.com/java/technologies/downloads/#java11-mac

 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

 

https://www.jetbrains.com/idea/download/#section=mac

 

Download IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains

Download the latest version of IntelliJ IDEA for Windows, macOS or Linux.

www.jetbrains.com

 

2. H2 Database 설치

https://www.h2database.com 

 

H2 Database Engine (redirect)

H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Written in Java, but also available as native executable JDBC and (partial) ODBC API Embedded and client/server mo

www.h2database.com

 

해당 경로로 이동하여 권한 설정 ( /bin )

$ chmod 755 build.sh

 

실행

$ ./h2.sh

 

home 경로에 test.mv.db 파일 생성 확인

 

 

2. 프로젝트 생성 

( Dependencies 는 프로젝트의 환경에 맞게 설정한다. )

 

https://start.spring.io/

 

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
반응형

+ Recent posts