프로젝트를 설정 시키기 위해서는 DB와 Security 등의 구성을 추가해야 한다.

jdbc:h2:~/freemarket으로 초기 생성을 한 뒤 jdbc:h2:tcp://localhost/~/freemarket을 입력하여 접속해준다.
application.yml
spring:
profiles:
active: dev # 기본적으로 dev 환경 사용 (개발 시)
include: secret # secret 설정 포함
# 공통 설정
jpa:
open-in-view: false
properties:
hibernate:
format_sql: true
server:
servlet:
context-path: /
encoding:
charset: UTF-8
force: true
logging:
level:
com.freemarket.freemarket: info
# JWT 설정 (시크릿 정보는 application-secret.yml에서 가져옴)
jwt:
access-token-validity-in-seconds: 3600
refresh-token-validity-in-seconds: 86400
기본적으로 개발(dev) 환경 프로필을 활성화한다. Spring Boot는 이 설정에 따라 application-dev.yml 파일의 설정을 우선적으로 적용한다.
open-in-view: false: OSIV(Open Session In View) 패턴을 비활성화한다. 성능 최적화를 위한 설정으로, 트랜잭션 범위 밖에서 지연 로딩이 발생하지 않도록 한다.
context-path: /: 애플리케이션의 기본 URL 경로를 루트('/')로 설정.
encoding: 서블릿 요청/응답의 인코딩 설정.
charset: UTF-8: 문자 인코딩을 UTF-8로 지정.
force: true: 클라이언트가 다른 인코딩을 지정해도 UTF-8을 강제로 적용.
application-dev.yml
spring:
config:
activate:
on-profile: dev
# H2 데이터베이스 설정
datasource:
url: jdbc:h2:tcp://localhost/~/freemarket
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create-drop
properties:
hibernate:
dialect: org.hibernate.dialect.H2Dialect
show_sql: true
defer-datasource-initialization: true
# H2 콘솔 활성화
h2:
console:
enabled: true
path: /h2-console # 콘솔 접근 URL 경로를 설정
settings:
web-allow-others: false # 로컬 머신에서만 콘솔에 접근할 수 있도록 제한
# 개발 편의를 위한 DevTools 설정
devtools:
restart:
enabled: true
livereload:
enabled: true
# 개발 환경 로깅 설정
logging:
level:
org.hibernate.SQL: debug
org.hibernate.type.descriptor.sql.BasicBinder: trace
com.example.shop: debug
org.springframework.security: debug
dev 프로필이 활성화될 때만 적용된다.application-prod.yml
spring:
config:
activate:
on-profile: prod
# MySQL 데이터베이스 설정 (시크릿 정보는 application-secret.yml에서 가져옴)
datasource:
url: jdbc:mysql://${mysql.host}:${mysql.port}/${mysql.database}?useSSL=true&serverTimezone=UTC&characterEncoding=UTF-8
username: ${mysql.username}
password: ${mysql.password}
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 10
minimum-idle: 5
connection-timeout: 30000
jpa:
hibernate:
ddl-auto: validate # 운영 환경에서는 validate 사용
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
format_sql: false
show_sql: false
# 개발 도구 비활성화
devtools:
restart:
enabled: false
livereload:
enabled: false
# 운영 환경 로깅 설정
logging:
level:
root: INFO
com.example.shop: INFO
application-secret.yml
spring:
config:
activate:
on-profile: secret
# MySQL 연결 정보 - 운영 환경용
mysql:
host: localhost
port: 3306
database: name
username: name
password: password
# JWT 시크릿 키
jwt:
secret: key
# 기타 민감한 정보들
api:
payment:
key: your_payment_gateway_api_key
secret: your_payment_gateway_secret
email:
username: your_email_username
password: your_email_password
secret 파일은 github에 올라가면 안 되는 민감 파일이기 때문에 ignore 설정을 해준다.
### Secret ###
/src/main/resources/application-secret.yml