본문 바로가기
프로젝트/PongGame

build.gradle, application.yml

by 히포파타마스 2022. 4. 13.

의존성 라이브러리 추가, 애플리케이션 설정

프로젝트 진행에 있어 필요한 의존성 라이브러리들을 추가하고 애플리케이션에 대한 설정을 추가한다.

의존성 라이브러리 관리는 gradle을 사용하였고, 어플리케이션 설정은 yml을 사용하였다.

 

 

 

 

1. 의존성 라이브러리

 

[dependency]

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation group: 'com.auth0', name: 'java-jwt', version: '3.18.1'
    implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'com.querydsl:querydsl-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-websocket'
    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0'
    implementation group: 'org.webjars', name: 'sockjs-client', version: '1.1.2'
    implementation group: 'org.webjars', name: 'stomp-websocket', version: '2.3.3-1'
    implementation group: 'org.springframework.security', name: 'spring-security-messaging'
    implementation 'org.springframework.boot:spring-boot-starter-mail'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation group: 'org.springframework', name: 'spring-messaging'
    implementation group: 'org.modelmapper', name: 'modelmapper', version: '2.3.6'
    //objectMapper 사용시 LocalDateTime을 가져오지 못하는 오류 해결
    implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310'
    implementation group: 'com.google.code.gson', name: 'gson'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'mysql:mysql-connector-java'
    runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
}

□ 웹

● spring-boot-starter-web : Spring Web

 

 

□ 인증, 보안

● spring-boot-starter-security : Spring Security

● java-jwt : JWT

● spring-boot-starter-oauth2-client : Oauth

 

 

□ DB

●  spring-boot-starter-data-jpa : JPA

● querydsl-jpa : QueryDSL

● p6spy-spring-boot-starter : 쿼리 파라미터에 적용되는 실제 값을 나타내 주는 라이브러리

 

 

□ 웹소켓

● spring-boot-starter-websocket : Spring Websocket

● sockjs-client : websocket 사용 시 sockjs설정에 필요한 라이브러리

● stomp-websocket : stomp

● spring-security-messaging : websocket에 security적용

 

 

□ 기타 유틸

● spring-boot-starter-mail : 메일 전송

● spring-boot-starter-validation : 검증에 필요한 validation 관련 라이브러리

● spring-messaging : spring messaging

● modelmapper : 클래스 매핑 관련 라이브러리

● jackson-datatype-jsr310 : objectMapper 사용시 LocalDateTime을 매핑하지 못하는 문제 해결

● gson : object와 json간의 매핑을 쉽게 해주는 라이브러리 

● spring-boot-starter-thymeleaf : 타임리프

● thymeleaf-extras-springsecurity5 : 타임리프 security 설정

● spring-boot-devtools : 빌드만으로 화면 변경

● lombok : lombok(annotationProcessor로 지정해야 함 x -> 컴파일러 롬복 어노테이션 인식 못함)

● mysql-connector-java : mysql 커넥터

● spring-boot-starter-test : spring test

● spring-security-test : spring test시 security사용 관련 라이브러리

 

 

 

■ QueryDSL

QueryDSL을 사용하기 위해서는 Dependency 뿐만 아니라 추가적인 설정을 작성해야 한다.

 

[플러그인 추가]

plugins {
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}

 

 

[QueryDSL 설정 추가]

//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}
sourceSets {
    main.java.srcDir querydslDir
}
configurations {
    querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝

● querydsl : QueryDSL 기본 설정 추가. jpa 사용 여부, 사용될 경로 등을 지정한다.

● sourceSet : build시 사용할 sourceSet을 추가한다.

● configurations : QueryDSL 설정. QueryDSL이 compileClasspath를 상속하도록 설정.

● compileQuerydsl : QueryDSL이 컴파일을 할 때 사용할 옵션을 설정

 

 

 

 

2. 애플리케이션 설정

■ application.yml

 

[application.yml]

server:
  port: 8080
  servlet:
    encoding:
      charset: UTF-8
      enabled: true
      force: true
    session:
      tracking-modes: cookie

spring:
  profiles:
    include: oauth, db
  messages:
    basename: messages,errors

  jpa:
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    properties:
      hibernate:
        format_sql: true
        default_batch_fetch_size: 100

decorator:
  datasource:
    p6spy:
      enable-logging: true

#logging.level:
#  org.hibernate.SQL: debug

□ server

● port : 애플리케이션의 포트를 설정한다(기본 8080).

● servlet

◎ encoding : HTTP URL의 인코딩 설정

◎ session_tracking-modes_cookie : 브라우저가 쿠키를 사용하지 못하거나 쿠키가 없을 경우 url에 jsessionid를 노출시키는 것을 방지

 

 

□ spring

● profiles_include : 특정 이름의 설정 파일을 적용한다.

ex) profiles_include: oauth, db -> 설정 파일에 application-oauth.yml, application-db.yml의 내용이 적용된다.

 

● messages_basename : 스프링 메시지는 해당 설정에 명시된 이름을 기반으로 메시지 설정 파일을 인식한다.

ex) messages_basename: messages, errors -> messages.properties, errors.properties 파일을 메시지 설정 파일로 인식 

 

 

□ jpa

● hibernate_naming_physical-strategy

◎ jpa사용 시 table의 이름을 생성하는 정책을 설정한다.

◎ 기본적으로 언더스코어를 활용하는 방식을 적용.

◎ 본 프로젝트에서는 class 이름이 그대로 table 이름이 되는 정책을 사용 (PhysicalNamingStrategyStandardImpl)

 

● properties_hibernate

◎ format_sql : 콘솔에 출력되는 쿼리문을 보기 좋은 형태로 바꿔준다.

◎ default_batch_fetch_size : 일대다 조회 시 컬렉션이나, 프록시 객체를 한꺼번에 설정한 size만큼 IN 쿼리로 조회한다.

일대다 조회시 해당 설정에 의해 컬렉션은 별도로 조회되기 때문에 페이징을 적용할 수 있다.

 

 

 

■ application-db.yml

DB와 관련된 설정이 작성되어있다.

DB의 username과 password가 설정되어야 되기 때문에 별도의 설정 파일로 만들고 git.ignore로 설정해서 정보의 유출을 제한하였다.

 

[application-db.yml]

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/hipo
    username: (사용하는 DB의 username)
    password: (사용하는 DB의 password)

  jpa:
    hibernate:
      ddl-auto: update

□ spring

● datasource

◎ driver-class-name : 사용되는 DB종류를 설정

◎ url : DB의 url

 

 

□ jpa

● hibernate_ddl-auto : 서버가 실행될 때 DB의 초기화 전략을 설정한다.

'프로젝트 > PongGame' 카테고리의 다른 글

LoginAccountIdArgumentResolver  (0) 2022.04.28
FileProcessor  (0) 2022.04.28
Spring Security, JWT, 인증, 인가  (5) 2022.04.18
Account 생성  (0) 2022.04.14
PongGame  (0) 2022.04.10

댓글