Spring Boot/Spring Batch 목표 아키텍처 정의 #4
8 changed files with 115 additions and 0 deletions
3
.forge/BAIS-SPRING-ARC-001-attempt-1.md
Normal file
3
.forge/BAIS-SPRING-ARC-001-attempt-1.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# BAIS-SPRING-ARC-001-attempt-1
|
||||
|
||||
Forge 이슈 작업 브랜치 `forge/BAIS-SPRING-ARC-001-attempt-1`.
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.example.demo.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
@Configuration
|
||||
@EnableTransactionManagement
|
||||
public class TransactionPolicyConfig {
|
||||
@Bean
|
||||
public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
|
||||
return new JpaTransactionManager(entityManagerFactory);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.example.demo.controller;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import com.example.demo.service.TransactionService;
|
||||
import com.example.demo.dto.TransactionDTO;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/transactions")
|
||||
public class TransactionController {
|
||||
private final TransactionService transactionService;
|
||||
|
||||
public TransactionController(TransactionService transactionService) {
|
||||
this.transactionService = transactionService;
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public void createTransaction(@RequestBody TransactionDTO transactionDTO) {
|
||||
transactionService.processTransaction(transactionDTO);
|
||||
}
|
||||
}
|
||||
9
src/main/java/com/example/demo/dto/TransactionDTO.java
Normal file
9
src/main/java/com/example/demo/dto/TransactionDTO.java
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
package com.example.demo.dto;
|
||||
|
||||
public class TransactionDTO {
|
||||
private Long id;
|
||||
private Double amount;
|
||||
private String description;
|
||||
|
||||
// Getters and Setters
|
||||
}
|
||||
13
src/main/java/com/example/demo/error/ErrorResponse.java
Normal file
13
src/main/java/com/example/demo/error/ErrorResponse.java
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
package com.example.demo.error;
|
||||
|
||||
public class ErrorResponse {
|
||||
private String message;
|
||||
private int status;
|
||||
|
||||
public ErrorResponse(String message, int status) {
|
||||
this.message = message;
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
// Getters
|
||||
}
|
||||
38
src/main/java/com/example/demo/job/TransactionJobConfig.java
Normal file
38
src/main/java/com/example/demo/job/TransactionJobConfig.java
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
package com.example.demo.job;
|
||||
|
||||
import org.springframework.batch.core.Job;
|
||||
import org.springframework.batch.core.Step;
|
||||
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
||||
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
|
||||
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
public class TransactionJobConfig {
|
||||
private final JobBuilderFactory jobBuilderFactory;
|
||||
private final StepBuilderFactory stepBuilderFactory;
|
||||
|
||||
public TransactionJobConfig(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
|
||||
this.jobBuilderFactory = jobBuilderFactory;
|
||||
this.stepBuilderFactory = stepBuilderFactory;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Job transactionJob() {
|
||||
return jobBuilderFactory.get("transactionJob")
|
||||
.start(transactionStep())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Step transactionStep() {
|
||||
return stepBuilderFactory.get("transactionStep")
|
||||
.tasklet((contribution, chunkContext) -> {
|
||||
// 배치 작업 로직
|
||||
return null;
|
||||
})
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
package com.example.demo.repository;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import com.example.demo.model.Transaction;
|
||||
|
||||
public interface TransactionRepository extends JpaRepository<Transaction, Long> {
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.example.demo.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.example.demo.dto.TransactionDTO;
|
||||
|
||||
@Service
|
||||
public class TransactionService {
|
||||
public void processTransaction(TransactionDTO transactionDTO) {
|
||||
// 거래 처리 로직
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue