의존성 라이브러리 추가, 애플리케이션 설정
프로젝트 진행에 있어 필요한 의존성 라이브러리들을 추가하고 애플리케이션에 대한 설정을 추가한다.
의존성 라이브러리 관리는 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 |
댓글