- Gradle 빌드 스크립트 파일
- 프로젝트를 어떻게 빌드하고, 어떤 의존성(dependency) 을 가져올지 정의하는 곳
- 실행 시점이 아니라 빌드 시점(compile, test, package) 에 영향을 줌
ex) 소스코드에서 JPA관련 Repository 사용, Spring boot 기반 WAS 사용 etc...
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.5'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.mysql:mysql-connector-j'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
=> 즉, 우리가 작성한 소스를 "컴파일하여 실행가능한 jar 파일( build )을 만들 때" 해당 프로젝트는 JPA, Mysql Driver, Spring Web Module 등이 필요하다는 정보를 나타내는 곳
- Spring Boot 실행 환경 설정 파일
- 애플리케이션이 실행될 때 필요한 설정값을 정의
- DB 연결, 포트 번호, 로그 레벨, 외부 API 키, Profile별 환경 설정 등에 사용
ex)
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: user
password: pass
server:
port: 8080
logging:
level:
root: INFO
=> 즉, jar를 "실행할 때" DB는 어디에 연결하고 포트는 몇 번을 쓸 지, 어떤 환경에서 어떻게 동작할까? 에 대한 설정이다
- yml파일에서 런타임시점 설정을 해주는 건 좋은데 해당 설정 파일에 중요한 정보가 너무 많이 들어가 있네...?
- value 값들을 .env파일로 분리하고 ${~~~}로 바인딩 받아서 쓰자! 에서 나온 파일
- 해당 파일은 인코딩 과정을 거쳐서 서버에 올려야함
.env
SWAGGER_SERVER_URL= 도메인 주소
DB_URL=DB 연결정보
DB_USERNAME=이름
DB_PASSWORD=비밀번호
application.yml
datasource:
url: ${DB_URL}
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
driver-class-name: org.postgresql.Driver
hikari:
maximum-pool-size: 8
minimum-idle: 2
connection-timeout: 3000
idle-timeout: 60000