diff --git a/src/main/java/in/koreatech/payment/KoinPaymentApplication.java b/src/main/java/in/koreatech/payment/KoinPaymentApplication.java index a4716fc..a072058 100644 --- a/src/main/java/in/koreatech/payment/KoinPaymentApplication.java +++ b/src/main/java/in/koreatech/payment/KoinPaymentApplication.java @@ -2,10 +2,25 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.boot.context.properties.ConfigurationPropertiesScan; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -@SpringBootApplication @ConfigurationPropertiesScan +@SpringBootApplication( + scanBasePackages = { + "in.koreatech.payment", + "in.koreatech.koin" + } +) +@EnableJpaRepositories(basePackages = { + "in.koreatech.payment", + "in.koreatech.koin" +}) +@EntityScan(basePackages = { + "in.koreatech.payment", + "in.koreatech.koin" +}) public class KoinPaymentApplication { public static void main(String[] args) { diff --git a/src/main/java/in/koreatech/payment/common/config/dataSource/KoinDBProperties.java b/src/main/java/in/koreatech/payment/common/config/dataSource/KoinDBProperties.java deleted file mode 100644 index f13b7a6..0000000 --- a/src/main/java/in/koreatech/payment/common/config/dataSource/KoinDBProperties.java +++ /dev/null @@ -1,12 +0,0 @@ -package in.koreatech.payment.common.config.dataSource; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties(prefix = "spring.datasource.koin.hibernate") -public record KoinDBProperties( - String ddlAuto, - Boolean showSql, - String packagesToScan, - String formatSql -) { -} diff --git a/src/main/java/in/koreatech/payment/common/config/dataSource/KoinDataSourceConfig.java b/src/main/java/in/koreatech/payment/common/config/dataSource/KoinDataSourceConfig.java deleted file mode 100644 index cba5bd8..0000000 --- a/src/main/java/in/koreatech/payment/common/config/dataSource/KoinDataSourceConfig.java +++ /dev/null @@ -1,67 +0,0 @@ -package in.koreatech.payment.common.config.dataSource; - -import java.util.HashMap; -import java.util.Map; - -import javax.sql.DataSource; - -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.jdbc.DataSourceBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.orm.jpa.JpaTransactionManager; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -import jakarta.persistence.EntityManagerFactory; -import lombok.RequiredArgsConstructor; - -@Configuration -@RequiredArgsConstructor -@EnableTransactionManagement -@EnableJpaRepositories( - basePackages = "in.koreatech.koin", - entityManagerFactoryRef = "koinEntityManagerFactory", - transactionManagerRef = "koinTransactionManager" -) -public class KoinDataSourceConfig { - - private final KoinDBProperties koinDBProperties; - - @Bean(name = "koinDataSource") - @ConfigurationProperties("spring.datasource.koin") - public DataSource koinDataSource() { - return DataSourceBuilder.create().build(); - } - - @Bean(name = "koinEntityManagerFactory") - public LocalContainerEntityManagerFactoryBean koinEntityManagerFactory( - @Qualifier(value = "koinDataSource") DataSource dataSource - ) { - LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); - em.setDataSource(dataSource); - em.setPackagesToScan(koinDBProperties.packagesToScan()); - em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); - em.setJpaPropertyMap(createJpaVendorProperties()); - return em; - } - - private Map createJpaVendorProperties() { - Map properties = new HashMap<>(); - properties.put("hibernate.show_sql", koinDBProperties.showSql()); - properties.put("hibernate.hbm2ddl.auto", koinDBProperties.ddlAuto()); - properties.put("hibernate.format_sql", koinDBProperties.formatSql()); - return properties; - } - - @Bean(name = "koinTransactionManager") - public PlatformTransactionManager koinTransactionManager( - @Qualifier(value = "koinEntityManagerFactory") EntityManagerFactory entityManagerFactory - ) { - return new JpaTransactionManager(entityManagerFactory); - } -} diff --git a/src/main/java/in/koreatech/payment/common/config/dataSource/KoinPaymentDBProperties.java b/src/main/java/in/koreatech/payment/common/config/dataSource/KoinPaymentDBProperties.java deleted file mode 100644 index 0140871..0000000 --- a/src/main/java/in/koreatech/payment/common/config/dataSource/KoinPaymentDBProperties.java +++ /dev/null @@ -1,12 +0,0 @@ -package in.koreatech.payment.common.config.dataSource; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -@ConfigurationProperties(prefix = "spring.datasource.koin-payment.hibernate") -public record KoinPaymentDBProperties( - String ddlAuto, - Boolean showSql, - String packagesToScan, - String formatSql -) { -} diff --git a/src/main/java/in/koreatech/payment/common/config/dataSource/KoinPaymentDataSourceConfig.java b/src/main/java/in/koreatech/payment/common/config/dataSource/KoinPaymentDataSourceConfig.java deleted file mode 100644 index db9542d..0000000 --- a/src/main/java/in/koreatech/payment/common/config/dataSource/KoinPaymentDataSourceConfig.java +++ /dev/null @@ -1,70 +0,0 @@ -package in.koreatech.payment.common.config.dataSource; - -import java.util.HashMap; -import java.util.Map; - -import javax.sql.DataSource; - -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.jdbc.DataSourceBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.orm.jpa.JpaTransactionManager; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -import jakarta.persistence.EntityManagerFactory; -import lombok.RequiredArgsConstructor; - -@Configuration -@RequiredArgsConstructor -@EnableTransactionManagement -@EnableJpaRepositories( - basePackages = "in.koreatech.payment", - entityManagerFactoryRef = "koinPaymentEntityManagerFactory", - transactionManagerRef = "koinPaymentTransactionManager" -) -public class KoinPaymentDataSourceConfig { - - private final KoinPaymentDBProperties koinPaymentDBProperties; - - @Bean(name = "koinPaymentDataSource") - @ConfigurationProperties("spring.datasource.koin-payment") - public DataSource koinPaymentDataSource() { - return DataSourceBuilder.create().build(); - } - - @Primary - @Bean(name = "koinPaymentEntityManagerFactory") - public LocalContainerEntityManagerFactoryBean koinPaymentEntityManagerFactory( - @Qualifier(value = "koinPaymentDataSource") DataSource dataSource - ) { - LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); - em.setDataSource(dataSource); - em.setPackagesToScan(koinPaymentDBProperties.packagesToScan()); - em.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); - em.setJpaPropertyMap(createJpaVendorProperties()); - return em; - } - - private Map createJpaVendorProperties() { - Map properties = new HashMap<>(); - properties.put("hibernate.show_sql", koinPaymentDBProperties.showSql()); - properties.put("hibernate.hbm2ddl.auto", koinPaymentDBProperties.ddlAuto()); - properties.put("hibernate.format_sql", koinPaymentDBProperties.formatSql()); - return properties; - } - - @Primary - @Bean(name = "koinPaymentTransactionManager") - public PlatformTransactionManager koinPaymentTransactionManager( - @Qualifier(value = "koinPaymentEntityManagerFactory") EntityManagerFactory entityManagerFactory - ) { - return new JpaTransactionManager(entityManagerFactory); - } -} diff --git a/src/main/java/in/koreatech/payment/dto/request/TemporaryTakeoutPaymentSaveRequest.java b/src/main/java/in/koreatech/payment/dto/request/TemporaryTakeoutPaymentSaveRequest.java index b3abd5b..dde2ff8 100644 --- a/src/main/java/in/koreatech/payment/dto/request/TemporaryTakeoutPaymentSaveRequest.java +++ b/src/main/java/in/koreatech/payment/dto/request/TemporaryTakeoutPaymentSaveRequest.java @@ -1,12 +1,16 @@ package in.koreatech.payment.dto.request; +import static com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy; import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.NOT_REQUIRED; import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED; +import com.fasterxml.jackson.databind.annotation.JsonNaming; + import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; +@JsonNaming(value = SnakeCaseStrategy.class) public record TemporaryTakeoutPaymentSaveRequest( @Schema(description = "연락처", example = "01012345678", requiredMode = REQUIRED) @NotBlank(message = "연락처는 필수 입력사항입니다.") diff --git a/src/main/java/in/koreatech/payment/service/TossService.java b/src/main/java/in/koreatech/payment/service/TossService.java index d5e032d..007fa5e 100644 --- a/src/main/java/in/koreatech/payment/service/TossService.java +++ b/src/main/java/in/koreatech/payment/service/TossService.java @@ -137,7 +137,7 @@ public String createTemporaryTakeoutPayment(String accessToken, TemporaryTakeout return orderId; } - @Transactional(transactionManager = "koinTransactionManager") + @Transactional public PaymentConfirmResponse confirmPayment(String accessToken, String paymentKey, String orderId, Integer amount) { Integer userId = jwtTokenResolver.getUserId(accessToken); User user = userRepository.getById(userId); @@ -170,7 +170,7 @@ public PaymentConfirmResponse confirmPayment(String accessToken, String paymentK return response; } - @Transactional(transactionManager = "koinTransactionManager") + @Transactional public List cancelPayment(String accessToken, String paymentKey, String cancelReason) { Integer userId = jwtTokenResolver.getUserId(accessToken); User user = userRepository.getById(userId);