해결된 질문
작성
·
1.2K
0
안녕하세요 강사님. 우선 강의 잘 들었다고 말씀드리고싶습니다.
다름이 아니라, 프로젝트에 스프링 배치를 적용시켜보려합니다.
아.. 근데 애플리케이션을 실행하면 기본으로 생성되는 배치 테이블이 생성되질 않습니다. (로컬에서는 h2 사용중입니다.)
현재로서는 임시방편으로 BatchProperties
에 나와있는대로 schema-h2.sql
내용을 복사해서 애플리케이션 구동 후, sql console 에 붙여넣기하여 배치 테이블을 직접 만들어주고있습니다. (이렇게 하면 배치랑 스케줄링이 정상적으로 잘 동작합니다.)
현재 yml
은 아래와 같습니다. profile
에 따라 yml 을 분리시켜주었긴 했는데, 포맷은 똑같습니다!
(defer-datasource-initialization 와 sql-init-mode 과 관련있나해서 이것도 바꿔보았는데.. 되질 않습니다ㅠㅠ)
spring:
profiles:
active: local
jpa:
open-in-view: false
hibernate:
ddl-auto: create
defer-datasource-initialization: true
properties:
hibernate:
format_sql: true
default_batch_fetch_size: 100
data:
web:
pageable:
one-indexed-parameters: true
datasource:
url: jdbc:h2:tcp://localhost/~/apartribe;MODE=MySQL
username: sa
password:
driver-class-name: org.h2.Driver
sql:
init:
mode: always
mail:
host: smtp.gmail.com
port: 587
username: EMAIL
password: PASSWORD
properties:
mail:
smtp:
auth: true
starttls:
enable: true
ssl:
trust: "*"
security:
oauth2:
client:
registration:
kakao:
client-name: KOAuth2LoginDemo
client-id: KAKAO_CLINET_ID
client-secret: KAKAO_CLINET_SECRET
client-authentication-method: client_secret_post
redirect-uri: http://localhost:8080/login/oauth2/code/kakao
authorization-grant-type: authorization_code
scope: profile_nickname, profile_image, account_email, age_range, birthyear
provider:
kakao:
authorization-uri: https://kauth.kakao.com/oauth/authorize
token-uri: https://kauth.kakao.com/oauth/token
user-info-uri: https://kapi.kakao.com/v1/oidc/userinfo
user-name-attribute: sub
batch:
jdbc:
initialize-schema: always
job:
enabled: false
application:
security:
jwt:
secret-key: ACCESS_TOKEN_SECRET_KEY
expiration: ACCESS_TOKEN_EXPIRATION
refresh-token:
secret-key: REFRESH_TOKEN_SECRET_KEY
expiration: REFRESH_TOKEN_EXPIRATION
mail:
subject: MAIL_SUBJECT
logging:
level:
sql: debug
cloud:
aws:
s3:
bucket: AWS_BUCKET_NAME
credentials:
access-key: AWS_ACCESS_KEY
secret-key: AWS_SECRET_KEY
region:
static: ap-northeast-2
auto: false
stack:
auto: false
server:
error:
whitelabel:
enabled: false
include-exception: false
include-message: never
include-stacktrace: never
include-binding-errors: never
프로젝트 주소는 아래와 같습니다.
https://github.com/Revi1337/apartribe-backend
Batch 와 Scheduling 설정의 위치는 아래와 같습니다
src/main/java/kr/apartribebackend/global/config/BatchConfig.java
와
src/main/java/kr/apartribebackend/global/config/SchedulingConfig.java
조언좀 부탁드리겠습니다 선생님..ㅠㅠ
답변 2
1
안녕하세요. PrivilegeEscalate님 안녕하세요 :)
답변이 늦어져서 죄송합니다 😢
@EnableBatchProcessing 어노테이션 추가를 부탁드려보겠습니다😀
예시는 아래 URL 코드를 확인해주세요!
감사합니다.
0
안녕하세요 PrivilegeEscalate 님, 인프런 AI 인턴이에요.
스프링 배치 테이블이 생성되지 않는 문제에 대해 문의하셨네요. 해당 문제에 대해 몇 가지 확인해야 할 사항이 있습니다.
schema-h2.sql
파일 위치 확인: BatchProperties
에서 명시한 파일 경로가 정확한지 확인해주세요. 파일이 위치한 경로나 파일명에 오타가 없는지 다시 확인해보시기 바랍니다.
스프링 재시작 확인: 배치 테이블은 애플리케이션이 실행될 때 자동으로 생성됩니다. 스프링 애플리케이션을 재시작하시면서 배치 테이블의 생성 여부를 확인해주세요.
로그 확인: 애플리케이션의 로그를 확인하여 배치 관련 에러 또는 경고 메시지가 있는지 찾아보세요. 에러 또는 경고 메시지에 따라 문제의 원인을 파악할 수 있을 것입니다.
H2 데이터베이스 접속 확인: H2 데이터베이스에 정상적으로 접속되는지 확인해주세요. 접속이 제대로 되지 않으면 배치 테이블이 생성되지 않을 수 있습니다. H2 데이터베이스의 URL, 사용자 이름, 비밀번호 등을 다시 한번 확인해보세요.
위의 사항을 확인하신 후에도 문제가 해결되지 않는다면, 배치 관련 설정 파일인 BatchConfig.java
와 SchedulingConfig.java
의 내용을 확인해보시는 것도 도움이 될 수 있습니다. 불편을 드려 죄송하며, 언제든지 도움이 필요하시면 다시 문의해주세요. 감사합니다!
저도 답변이 늦었습니다 죄송합니다.
우선 @EnableBatchProcessing 과 @Job, @Step 설정을 분리하였더니 정상적으로 잘 동작합니다. @EnableBatchProcessing 와 @Job, @Step 를 하나의 파일에 작성했던것이 문제였나봅니다. 감사합니다 강사님!