์คํ๋ง๊ณผ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์~์ฃผ ๊ด์ฌ์ด ๋ง์ ๊ฐ๋ฐ์์ ๋๋ค โบ
Posts
Q&A
[Python ์คํผ๋ ์ดํฐ ๊ธฐ๋ณธ] 10:30 ์ ๋์ค๋ UnPaused ์ ๋์ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.
์ AI ๊ฐ ๋ณด์ฌ์ค ๋งํฌ๋ฅผ ์ฐธ์กฐํ๊ฒ ์ต๋๋ค. ์ค์ผ์ค๋ง๊ณผ ๊ด๋ จ๋ ์ง๋ฌธ์ ๋๋ค. - ์ธํ๋ฐ | ์ปค๋ฎค๋ํฐ ์ง๋ฌธ&๋ต๋ณ์ ๊ฐํ๋ ค๋ ์ง๋ฌธ์ด๋ ๋๊ฐ๋ค์.
- 0
- 3
- 51
Q&A
StepExecutionListener ์ afterStep ์์ return ExitStatus.FAILED ์ ์ํ ๋์์ ์๋ฌธ์ด ๊ฐ๋๋ค.
์๋ฌธ์๋ต์ ๋๋ค. package coding.toast.batch.job.reader.listener; import org.springframework.batch.core.*; public class EmptyReadFailureListener implements StepExecutionListener { @Override public ExitStatus afterStep(StepExecution stepExecution) { // ๊ธฐ์กด์ ์ด๋ฏธ ์์ธ๊ฐ ํฐ์ ธ์ failed ๋ ์ํ์ธ์ง ๋จผ์ ํ์ธํ๋ค. if (!stepExecution.getStatus().equals(BatchStatus.FAILED)) { if (stepExecution.getReadCount() > 0) { return stepExecution.getExitStatus(); } else { // ์ถํ Job ๊ณผ Step ์ ์ฌ๊ธฐ๋์ ์ํด์ BatchStatus.FAILED ๋ฅผ ๊ผญ ์ค์ ํฉ๋๋ค. // SimpleJob ์์๋ ์ด ์ค์ ์ ํ๋ฉด ๋จ์ ์๋ Step ๋ค์ ์คํ์ ๋ฐฉ์งํ๋ค. stepExecution.setStatus(BatchStatus.FAILED); return ExitStatus.FAILED .addExitDescription("exit Because Of No Item Read"); } } return stepExecution.getExitStatus(); } } ์ด๋ ๊ฒ ํ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ต๋๋ค.JobExecution : Batch Status = FAILED / EXIT STATUS = FAILED์ฒซ๋ฒ์งธ StepExecution : Batch Status = FAILED / EXIT STATUS = FAILED๋๋ฒ์งธ StepExecution : ์คํ ์์ฒด๊ฐ ์๋ฉ๋๋ค.ํค ํฌ์ธํธ๋ stepExecution.setStatus(BatchStatus.FAILED); ๋ฅผ afterStep ๋ฉ์๋ ๋ด์์ ํ๋ฒ ํธ์ถํ๋ค๋ ์ ์ ๋๋ค. ์ด๋ ๊ฒ ๋จ์ผ๋ก์จ Job, Step ๋ชจ๋ ์ถํ์ ์ฌ์คํ์ด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ์ SimpleJob ์ด ์๋๋ผ FlowJob ์ ๊ตฌ์ฑํ๋ค๋ฉด ์๋์ฒ๋ผ ํ ์๋ ์์ต๋๋ค.@Configuration @RequiredArgsConstructor public class MyJobConfig { private final JobRepository jobRepository; private final PlatformTransactionManager transactionManager; @Bean public Job customItemStreamConfigJob() { //@formatter:off return new JobBuilder("customItemStreamConfigJob", jobRepository) .start(customItemStreamConfigStep()) .on("FAILED") .fail() .from(customItemStreamConfigStep()) .on("*").to(simpleStep()) .end() .build(); // ์กฐ๊ทผ ๋ ๊ฐ๋จํ๊ฒ๋ ์๋์ฒ๋ผ ์์ฑํ ์ ์์ต๋๋ค. // return new JobBuilder("customItemStreamConfigJob", jobRepository) // .start(customItemStreamConfigStep()) // .on("EMPTY_READ").fail() // .next(simpleStep()).end() // .build(); //@formatter:on } // ๋๋จธ์ง ์ฝ๋๋ ์ด์ ์ง๋ฌธ์ ์์ฑํ ์์์ฝ๋์ ๋์ผํฉ๋๋ค. // ...์๋ต... } ์ฐธ๊ณ ํ ๊ธ: java - Spring batch job exit status for failed step - Stack Overflow
- 0
- 2
- 230
Q&A
์คํ๋ง ๋ฐฐ์น 5 ๋ณ๊ฒฝ์ ์ ๋ฆฌ
spring batch 5.0.0~5.1.x ๋ฒ์ ์ฌ์ฉ ์ BeanPostProcessor Warning Log ํด๊ฒฐ๋ฒ ๊ณต์ ํฉ๋๋ค. ๋ฌธ์ ์ (์ฌ์ง)ํ์ฌ spring boot 3.3.x (spring batch 5.1) ๋ฒ์ ์ฝ๋๋ฅผ ์คํ๋ง ํด๋ ์์ฒ๋ผ BeanPostProcessor ๊ด๋ จ Warning Log ๊ฐ ๋์ต๋๋ค. ํฐ ๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง๋ ์์ง๋ง ๊ต์ฅํ ์ฑ๊ฐ์ญ๋๋ค.ํด๊ฒฐ๋ฒ์ด ๋ก๊ทธ๊ฐ ๋ณด๊ธฐ ์ซ์ผ๋ฉด 2๊ฐ์ Bean ์ ๋ฑ๋กํ๋ฉด ๋ฉ๋๋ค.(spring batch 5.0 ~ 5.1 ๋ฒ์ ์ผ ๋๋ง ํ์๋ฉด ๋ฉ๋๋ค, 5.2 ์์๋ ๊ณ ์ณ์ง ์์ ์ ๋๋ค.) package coding.toast.springbatch; import org.springframework.batch.core.configuration.JobRegistry; import org.springframework.batch.core.configuration.support.JobRegistrySmartInitializingSingleton; import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; @SpringBootApplication public class SpringBatchAppApplication { public static void main(String[] args) { SpringApplication.run(SpringBatchAppApplication.class, args); } // https://github.com/spring-projects/spring-batch/issues/4519 // https://docs.spring.io/spring-batch/reference/5.2-SNAPSHOT/job/advanced-meta-data.html#jobregistrysmartinitializingsingleton @Bean public static BeanDefinitionRegistryPostProcessor jobRegistryBeanPostProcessorRemover() { return registry -> registry.removeBeanDefinition("jobRegistryBeanPostProcessor"); } @Bean public JobRegistrySmartInitializingSingleton jobRegistrySmartInitializingSingleton(JobRegistry jobRegistry) { return new JobRegistrySmartInitializingSingleton(jobRegistry); } }- BeanDefinitionRegistryPostProcessor : ๋ฌธ์ ๊ฐ ๋๋ JobRegistryBeanPostProcessor ์ ๊ฑฐ- JobRegistrySmartInitializingSingleton : JobRegistryBeanPostProcessor ์ ๋์ฒดํจ ์ฐธ๊ณ ์ฐธ๊ณ ๋ก ์ด ๋ฌธ์ ๋ Spring batch 5.2 (=> Spring Boot 3.4.x ์ ์ฉ ์์ ) ์์ ๊ณ ์ณ์ง ์์ ์ ๋๋ค.Multiple trationDelegate$BeanPostProcessorChecker Warnings Arise When Using Spring Boot 3.2.0 ยท Issue #4519 ยท spring-projects/spring-batch ยท GitHub Whatโs new in Spring Batch 5.2 :: Spring Batch ps.2024-11-22ํ์ฌ ์๊ฐ(2024-11-22)๋ถ๋ก Spring Boot 3.4 ๊ฐ ๋์๊ณ ,๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ Spring Batch ์ ๋ฒ์ ๋ 5.2 ์ฌ๋ผ๊ฐ์ต๋๋ค.ํ ์คํธํด๋ณธ ๊ฒฐ๊ณผ ์์์ ๋งํ ๋ณต์กํ ์ค์ ์ ์ํด๋ ์ด์ ๋ WARNING ๋ก๊ทธ๊ฐ ๋จ์ง ์์ต๋๋ค!(์ฌ์ง)
- 14
- 3
- 1.8K
Q&A
jobLauncherTestUtils ๋นจ๊ฐ ์ค ์ง๋ฌธ์ ๋๋ค.
(์ฌ์ง) ์ ๊ทธ๋ฆผ์ฒ๋ผ 2๊ฐ์ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ์๋ฉด ๋ฉ๋๋ค.Jakarta EE: Batch ApplicationSpring Batch์ฐธ๊ณ : ๋นจ๊ฐ์ค ๋์๋ ์๋ฉ๋๋ค. ์ ๋ ๊ทธ๋ฅ ์ฐ์ฐํด์ ์ค์นํด์ ๋นจ๊ฐ์ค ์ ๋์ค๊ฒ ํ์ต๋๋ค.
- 0
- 2
- 1.4K
Q&A
Xstream ๊ด๋ จ ForbiddenClassException ๋๋ CannotResolveClassException ํด๊ฒฐ๋ฐฉ๋ฒ
๊ฐ์ฌํฉ๋๋ค~
- 2
- 2
- 564
Q&A
์๋์ฐ ์ฌ์ฉ์ ์ง๋ฌธ
์๋ ํ์ธ์, ์ง๋๊ฐ๋ Window 10 ์ฌ์ฉ์์ ๋๋ค.๊ฐ์ธ์ ์ผ๋ก Window ์ฌ์ฉํ์๋ฉด ์๋ 2๊ฐ๋ฅผ ์ค์นํ์๋ ๊ฒ์ ๊ฐ๋ ฅ ์ถ์ฒํฉ๋๋ค.(WSL2 ๊ธฐ๋ฐ) Docker DesktopWSL2 ๊ธฐ๋ฐ์ ๋ฆฌ๋ ์ค (Ubuntu ์ถ์ฒ)์ด๋ฌ๋ฉด ๋น๋ก ํธ์คํธ ํ๊ฒฝ(Window ํ๊ฒฝ) ์์ Docker Desktop ์ ์ค์นํด๋ WSL2 ํ๊ฒฝ์ ์ฐ๋ถํฌ์์๋ docker ๋ช ๋ น์ด๊ฐ ๋๊ฐ์ด ๋จนํ๋๋ก ์๋์ผ๋ก ์ค์ ๋ฉ๋๋ค.์ด๋ฌ๋ฉด Linux ํ๊ฒฝ์์ Docker ๋ฅผ ํ์ฉํ๋ค๋ณด๋, ๋ฏธ๋ฌํ๊ฒ mac ๊ณผ window ๋ค๋ฅธ ์ ๋ค์ ์ ํ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋ฉ๋๋ค.
- 2
- 2
- 391
Q&A
ํ์ฌ ์ ๊ฐ ๊ฒช๊ณ ์๋ ์ํฉ์ธ๋ฐ ์กฐ์ธ ๋ถํ๋๋ฆฝ๋๋ค.
์ ๋ ์์ ์ ๋น์ทํ ์ํฉ์ ๋ง์ฃผ์น ์ ์ด ์์ด์ ์ง๋ฌธ์ ์ฌ๋ ธ๊ณ ,์ค์ค๋ก ๋ต์ ์ฐพ์ ์ ์ด ์์ต๋๋ค. ํด๋น ์ง๋ฌธ ๋งํฌ๋ฅผ ๊ณต์ ํฉ๋๋ค.https://www.inflearn.com/questions/567543 ์ถ๊ฐ์ ์ผ๋ก ์ด๋ฐ ์ผ์ ์๊ฐ ๋๊ธฐ ๋๋ ๋น๋๊ธฐ ๋์์ ๋ํ Junit ํ ์คํธ๋ฅผ ํ๊ณ ์ถ๋ค๋ฉดGitHub - awaitility/awaitility: Awaitility is a small Java DSL for synchronizing asynchronous operations์ ์์๋ณด์๋ฉด ์ข์ ๊ฑฐ ๊ฐ์ต๋๋ค.
- 0
- 2
- 503
Q&A
notifyAll ์ด ๋ ์ ํธ๋๋ ์ด์ ์ ๋ํ ์กฐ๊ธ ๋ detail ํ ์ค๋ช ์์ฒญ๋๋ฆฝ๋๋ค.
์ ์๋ ๋ต๋ณ๊ณผ ๋๋ถ์ด์ ๋ณด๋ฉด ์ข์ StackOverflow ๊ธ์ด ์์ด์ ๊ณต์ ํฉ๋๋ค.Java: notify() vs. notifyAll() all over againhttps://stackoverflow.com/a/3186336์ ์๋์ด ๋ต๋ณ ์ฃผ์ ๋๋ก ํ๋์ WaitSet ์ ์๋ก ๋ค๋ฅธ ์ด์ ๋ก wait ์ํ์ ๋์ธ ์ฐ๋ ๋๊ฐ ๋ชจ๋ ๋ด์์ง ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๋๋ฐ์,์ด๋ฌํ ๋ฌธ์ ๊ฐ ์ ํํ ์ด๋ป๊ฒ ๋ฐ์ํ ์ ์๋์ง์ ๋ํ ์์ธํ ์์๋ฅผ ์ด ๊ธ์์ ๋ณด์ฌ์ค๋๋ค.ps. ํด๋น ๊ธ์ ์ฝ์ ๋๋ [Monitor - ๋ชจ๋ํฐ - 1] ๊ฐ์ 27 ๋ถ ์ฆ์์ ๋์ค๋ ๊ทธ๋ฆผ์ด ๋จธ๋ฆฌ์ ๊ทธ๋ ค๋๊ณ ์ฝ์ผ๋ฉด ๋ ๋์์ด ๋ฉ๋๋ค.
- 1
- 3
- 1K
Q&A
9003 ํฌํธ ํฐ๋ฏธ๋๋ก ์คํํ๋ ๋ฐฉ๋ฒ ๊ณต์ ๋๋ฆฝ๋๋ค.
์ด ๋ฐฉ๋ฒ ์ธ์๋ mvn spring-boot:run `-Dspring-boot.run.jvmArguments='-Dserver.port=9003'์ฒ๋ผ - ์์ ๋ฐฑํฑ(`) ์ ๋ถ์ด๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค!
- 3
- 2
- 979
Q&A
๋ชจ๋ฌ์ด ๋ถ๋๋ฝ๊ฒ ๋จ์ง ์์ต๋๋ค.
์ ๋ ๊ฐ์ ํ์์ด ์์๋๋ฐ, ๊ฐ๋จํ๊ฒ transition ํ๊ทธ์ "appear" ์์ฑ์ ์ถ๊ฐํ๋ ํด๊ฒฐ๋์์ต๋๋ค. ์ฐธ๊ณ ๋งํฌ: https://stackoverflow.com/questions/61190142/the-transition-of-my-vue-modal-component-in-my-twig-file-is-not-working
- 1
- 3
- 503