## application.properties ##
# server
server.port=8080
spring.mvc.cors.allowed-origins=http://localhost:3000
# file logger
logging.level.kr.co.a1mediagroup=DEBUG
logging.file.name=logs/on-api.log
logging.logback.rollingpolicy.file-name-pattern=${LOG_FILE}.%d{yyyy-MM-dd}_%i
logging.logback.rollingpolicy.max-history=30
logging.logback.rollingpolicy.max-file-size=500MB
# spring
spring.mvc.problemdetails.enabled=true
spring.pid.fail-on-write-error=true
spring.pid.file=OnOffApi.pid
# jpa
spring.jpa.generate-ddl=false
spring.jpa.open-in-view=false
spring.jpa.properties.hibernate.default_batch_fetch_size=20
spring.jpa.properties.hibernate.ddl-auto=none
# jpa db log
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.orm.jdbc.bind=TRACE
logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.use_sql_comments=false
# db
spring.datasource.url=jdbc:mysql://localhost:3306/[db]
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=[username]
spring.datasource.password=[password]
spring.datasource.hikari.maximum-pool-size=50
spring.datasource.hikari.minimum-idle=15
spring.datasource.hikari.connection-timeout=300000
## build.gradle ##
plugins {
id 'java'
id 'idea'
id 'eclipse'
id 'application'
id 'org.springframework.boot' version '3.1.5'
id 'io.spring.dependency-management' version '1.1.3'
}
group = 'kr.co.onmediagroup'
version = '1.0-SNAPSHOT'
java {
sourceCompatibility = '17'
}
configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
annotationProcessor 'org.projectlombok:lombok'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
// JPA 관련 인터페이스 (예: @Entity, @Table, @Id) 제공
// <https://mvnrepository.com/artifact/jakarta.persistence/jakarta.persistence-api>
implementation group: 'jakarta.persistence', name: 'jakarta.persistence-api', version: '3.1.0'
// @PostConstruct, @PreDestroy, @Resource 등 Java 표준 어노테이션 제공
// <https://mvnrepository.com/artifact/jakarta.annotation/jakarta.annotation-api>
implementation group: 'jakarta.annotation', name: 'jakarta.annotation-api', version: '2.1.1'
// @NotBlank, @Size, @Email 등 Bean Validation (JSR 380) 제공
// <https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator>
implementation group: 'org.hibernate.validator', name: 'hibernate-validator', version: '8.0.1.Final'
}
test {
useJUnitPlatform()
}
@SpringBootApplication
public class ProjectApplication {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(OnOffApiApplication.class);
springApplication.addListeners(new ApplicationPidFileWriter());
springApplication.run(args);
}
}