From eef02c9fabb4e37ed8716ea14432e02f9d8442bc Mon Sep 17 00:00:00 2001 From: RosieOh Date: Fri, 25 Sep 2026 02:44:20 +0900 Subject: [PATCH] =?UTF-8?q?chore:=20=EC=93=B0=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8A=94=20Quartz=C2=B7Spring=20Batch=20=EC=8A=A4=ED=83=80?= =?UTF-8?q?=ED=84=B0=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 두 스타터가 의존성에 있지만 쓰는 코드가 없다. org.quartz 참조 0건, JobDetail·QuartzJobBean 0건, Job·Step 빈 0건이고 설정도 "기동 시 잡 자동 실행 비활성화" 뿐이었다. 주기 작업은 전부 @Scheduled 다. Quartz 는 컨텍스트마다 비데몬 워커 스레드 10개를 띄운다. 테스트에서는 Spring 컨텍스트가 13개라 비데몬 스레드 130개가 남아 테스트 JVM 이 종료되지 못하고 34분간 멈춰 있었다 (스레드 덤프: 테스트는 4분에 끝났고 이후 전부 종료 대기). 운영에서도 아무 일도 하지 않는 스레드 10개가 떠 있었다. - build.gradle: starter-quartz, starter-batch, spring-batch-test 제거 - application.yml: 실행할 잡이 없어 의미 없던 spring.batch 설정 제거 - 테스트 14개 파일: 없어진 자동설정 제외 목록·spring.batch 프로퍼티 정리 (없는 클래스를 spring.autoconfigure.exclude 에 두면 기동이 실패한다) --- build.gradle | 3 --- src/main/resources/application.yml | 7 ------- .../carecode/integration/AccessControlContractTest.java | 4 +--- .../carecode/integration/ApplicationContextLoadTest.java | 4 +--- .../integration/CareCodeMariaDbIntegrationTest.java | 4 +--- .../com/carecode/integration/ClientErrorStatusTest.java | 4 +--- .../carecode/integration/CommunityPolicyContractTest.java | 4 +--- .../integration/EndpointAuthorizationCoverageTest.java | 4 +--- .../carecode/integration/FacilityBookingContractTest.java | 4 +--- .../carecode/integration/FlywaySchemaValidationTest.java | 4 +--- .../integration/KakaoRegistrationCompletionTest.java | 4 +--- .../com/carecode/integration/LivePublicDataSyncTest.java | 4 +--- .../integration/NotificationStreamContractTest.java | 4 +--- .../com/carecode/integration/PublicStatsContractTest.java | 4 +--- .../com/carecode/integration/SampleDataScenarioTest.java | 4 +--- .../java/com/carecode/integration/SignUpContractTest.java | 4 +--- 16 files changed, 14 insertions(+), 52 deletions(-) diff --git a/build.gradle b/build.gradle index df8d5ec2..faa3cb0a 100644 --- a/build.gradle +++ b/build.gradle @@ -34,8 +34,6 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-actuator' - implementation 'org.springframework.boot:spring-boot-starter-batch' - implementation 'org.springframework.boot:spring-boot-starter-quartz' implementation 'org.springframework.boot:spring-boot-starter-aop' // Swagger/OpenAPI 3 @@ -57,7 +55,6 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' - testImplementation 'org.springframework.batch:spring-batch-test' testImplementation 'org.testcontainers:junit-jupiter:1.21.3' testImplementation 'org.testcontainers:mariadb:1.21.3' diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 37972103..c36852ca 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -11,13 +11,6 @@ spring: baseline-version: 0 locations: classpath:db/migration - # Spring Batch: 기동 시 잡 자동 실행 비활성화 - batch: - job: - enabled: false - jdbc: - initialize-schema: never - # Redis (Boot 3 정식 키는 spring.data.redis.*) data: redis: diff --git a/src/test/java/com/carecode/integration/AccessControlContractTest.java b/src/test/java/com/carecode/integration/AccessControlContractTest.java index 6b8d6dde..18b8d415 100644 --- a/src/test/java/com/carecode/integration/AccessControlContractTest.java +++ b/src/test/java/com/carecode/integration/AccessControlContractTest.java @@ -37,10 +37,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode_acl;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/ApplicationContextLoadTest.java b/src/test/java/com/carecode/integration/ApplicationContextLoadTest.java index 225badfa..1bb0dc0f 100644 --- a/src/test/java/com/carecode/integration/ApplicationContextLoadTest.java +++ b/src/test/java/com/carecode/integration/ApplicationContextLoadTest.java @@ -20,10 +20,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/CareCodeMariaDbIntegrationTest.java b/src/test/java/com/carecode/integration/CareCodeMariaDbIntegrationTest.java index b5b65883..c928c59a 100644 --- a/src/test/java/com/carecode/integration/CareCodeMariaDbIntegrationTest.java +++ b/src/test/java/com/carecode/integration/CareCodeMariaDbIntegrationTest.java @@ -25,10 +25,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "jwt.secret=testJwtSecretKeyForIntegrationTestsMustBe256BitsLong012345678901234567890", "spring.flyway.enabled=false", "spring.jpa.hibernate.ddl-auto=create-drop", diff --git a/src/test/java/com/carecode/integration/ClientErrorStatusTest.java b/src/test/java/com/carecode/integration/ClientErrorStatusTest.java index 2c6f2332..957669c7 100644 --- a/src/test/java/com/carecode/integration/ClientErrorStatusTest.java +++ b/src/test/java/com/carecode/integration/ClientErrorStatusTest.java @@ -41,10 +41,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode_clienterr;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/CommunityPolicyContractTest.java b/src/test/java/com/carecode/integration/CommunityPolicyContractTest.java index c15908c8..059f2191 100644 --- a/src/test/java/com/carecode/integration/CommunityPolicyContractTest.java +++ b/src/test/java/com/carecode/integration/CommunityPolicyContractTest.java @@ -39,10 +39,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode_content_contract;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/EndpointAuthorizationCoverageTest.java b/src/test/java/com/carecode/integration/EndpointAuthorizationCoverageTest.java index ee096cfd..ea90578f 100644 --- a/src/test/java/com/carecode/integration/EndpointAuthorizationCoverageTest.java +++ b/src/test/java/com/carecode/integration/EndpointAuthorizationCoverageTest.java @@ -56,10 +56,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode_authcov;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/FacilityBookingContractTest.java b/src/test/java/com/carecode/integration/FacilityBookingContractTest.java index 61dc9ee4..451d1fe6 100644 --- a/src/test/java/com/carecode/integration/FacilityBookingContractTest.java +++ b/src/test/java/com/carecode/integration/FacilityBookingContractTest.java @@ -48,10 +48,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode_facility_contract;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/FlywaySchemaValidationTest.java b/src/test/java/com/carecode/integration/FlywaySchemaValidationTest.java index 66692015..793bfeeb 100644 --- a/src/test/java/com/carecode/integration/FlywaySchemaValidationTest.java +++ b/src/test/java/com/carecode/integration/FlywaySchemaValidationTest.java @@ -36,10 +36,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "jwt.secret=testJwtSecretKeyForIntegrationTestsMustBe256BitsLong012345678901234567890", // 운영과 동일하게: 스키마는 Flyway 가 만들고 Hibernate 는 검증만 한다. "spring.flyway.enabled=true", diff --git a/src/test/java/com/carecode/integration/KakaoRegistrationCompletionTest.java b/src/test/java/com/carecode/integration/KakaoRegistrationCompletionTest.java index d2c3027f..0e32564b 100644 --- a/src/test/java/com/carecode/integration/KakaoRegistrationCompletionTest.java +++ b/src/test/java/com/carecode/integration/KakaoRegistrationCompletionTest.java @@ -47,10 +47,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode_kakao;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/LivePublicDataSyncTest.java b/src/test/java/com/carecode/integration/LivePublicDataSyncTest.java index e8ca5ba9..99614fa3 100644 --- a/src/test/java/com/carecode/integration/LivePublicDataSyncTest.java +++ b/src/test/java/com/carecode/integration/LivePublicDataSyncTest.java @@ -38,10 +38,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:live;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/NotificationStreamContractTest.java b/src/test/java/com/carecode/integration/NotificationStreamContractTest.java index 439c8cdf..f34e8bcb 100644 --- a/src/test/java/com/carecode/integration/NotificationStreamContractTest.java +++ b/src/test/java/com/carecode/integration/NotificationStreamContractTest.java @@ -37,10 +37,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode_notification_stream;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/PublicStatsContractTest.java b/src/test/java/com/carecode/integration/PublicStatsContractTest.java index b9afe217..89285057 100644 --- a/src/test/java/com/carecode/integration/PublicStatsContractTest.java +++ b/src/test/java/com/carecode/integration/PublicStatsContractTest.java @@ -42,10 +42,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode_public_stats;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/SampleDataScenarioTest.java b/src/test/java/com/carecode/integration/SampleDataScenarioTest.java index 79c10d49..5429730e 100644 --- a/src/test/java/com/carecode/integration/SampleDataScenarioTest.java +++ b/src/test/java/com/carecode/integration/SampleDataScenarioTest.java @@ -41,10 +41,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:sample;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa", diff --git a/src/test/java/com/carecode/integration/SignUpContractTest.java b/src/test/java/com/carecode/integration/SignUpContractTest.java index dbbf5701..5d023a31 100644 --- a/src/test/java/com/carecode/integration/SignUpContractTest.java +++ b/src/test/java/com/carecode/integration/SignUpContractTest.java @@ -37,10 +37,8 @@ properties = { "spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration," + "org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration," - + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration," - + "org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration", + + "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration", "spring.cache.type=none", - "spring.batch.job.enabled=false", "spring.datasource.url=jdbc:h2:mem:carecode_signup;MODE=MySQL;DB_CLOSE_DELAY=-1", "spring.datasource.driver-class-name=org.h2.Driver", "spring.datasource.username=sa",