From 8ac88f6012e423b657ddaac89f6343e19c4a35f5 Mon Sep 17 00:00:00 2001 From: "PC-KLEBER\\klebe" Date: Thu, 10 Aug 2023 16:25:53 -0400 Subject: [PATCH] =?UTF-8?q?[FEAT]=20configura=C3=A7=C3=A3o=20dos=20datasou?= =?UTF-8?q?rces?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tangerino/config/DataSourceConfigHom.java | 61 +++++++++++++++++++ .../tangerino/config/DataSourceConfigPrd.java | 61 +++++++++++++++++++ src/main/resources/application-hom.yml | 10 +-- src/main/resources/application-prd.yml | 9 --- src/main/resources/application.yml | 6 +- 5 files changed, 124 insertions(+), 23 deletions(-) create mode 100644 src/main/java/br/com/ae3tecnologia/ms/tangerino/config/DataSourceConfigHom.java create mode 100644 src/main/java/br/com/ae3tecnologia/ms/tangerino/config/DataSourceConfigPrd.java diff --git a/src/main/java/br/com/ae3tecnologia/ms/tangerino/config/DataSourceConfigHom.java b/src/main/java/br/com/ae3tecnologia/ms/tangerino/config/DataSourceConfigHom.java new file mode 100644 index 0000000..2836157 --- /dev/null +++ b/src/main/java/br/com/ae3tecnologia/ms/tangerino/config/DataSourceConfigHom.java @@ -0,0 +1,61 @@ +package br.com.ae3tecnologia.ms.tangerino.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Profile; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jndi.JndiObjectFactoryBean; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.naming.NamingException; +import javax.sql.DataSource; +import java.util.Objects; + +@Configuration +@Profile("hom") +@Slf4j +@EnableTransactionManagement +@EnableJpaRepositories(basePackages = "br.com.ae3tecnologia.ms.tangerino.repository", entityManagerFactoryRef = "primaryEntityManagerFactory", transactionManagerRef = "primaryTransactionManager") +public class DataSourceConfigHom { + + @Bean + @Primary + @ConfigurationProperties("app.datasource.primary.configuration") + public DataSource primaryDataSource() { + var bean = new JndiObjectFactoryBean(); + bean.setJndiName("jdbc:/postgres-homologacao"); + bean.setProxyInterface(DataSource.class); + bean.setLookupOnStartup(false); + try { + bean.afterPropertiesSet(); + } catch (IllegalArgumentException | NamingException e) { + log.debug(e.getMessage()); + } + return (DataSource) bean.getObject(); + } + + @Primary + @Bean(name = "primaryEntityManagerFactory") + public LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory(EntityManagerFactoryBuilder builder) { + return builder + .dataSource(primaryDataSource()) + .packages("br.com.ae3tecnologia.ms.tangerino.model") + .build(); + } + + @Primary + @Bean + public PlatformTransactionManager primaryTransactionManager( + final @Qualifier("primaryEntityManagerFactory") LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory) { + return new JpaTransactionManager(Objects.requireNonNull(primaryEntityManagerFactory.getObject())); + } + +} \ No newline at end of file diff --git a/src/main/java/br/com/ae3tecnologia/ms/tangerino/config/DataSourceConfigPrd.java b/src/main/java/br/com/ae3tecnologia/ms/tangerino/config/DataSourceConfigPrd.java new file mode 100644 index 0000000..18af18f --- /dev/null +++ b/src/main/java/br/com/ae3tecnologia/ms/tangerino/config/DataSourceConfigPrd.java @@ -0,0 +1,61 @@ +package br.com.ae3tecnologia.ms.tangerino.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Profile; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jndi.JndiObjectFactoryBean; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.naming.NamingException; +import javax.sql.DataSource; +import java.util.Objects; + +@Configuration +@Profile("prd") +@Slf4j +@EnableTransactionManagement +@EnableJpaRepositories(basePackages = "br.com.ae3tecnologia.ms.tangerino.repository", entityManagerFactoryRef = "primaryEntityManagerFactory", transactionManagerRef = "primaryTransactionManager") +public class DataSourceConfigPrd { + + @Bean + @Primary + @ConfigurationProperties("app.datasource.primary.configuration") + public DataSource primaryDataSource() { + var bean = new JndiObjectFactoryBean(); + bean.setJndiName("jdbc:/postgres-prd"); + bean.setProxyInterface(DataSource.class); + bean.setLookupOnStartup(false); + try { + bean.afterPropertiesSet(); + } catch (IllegalArgumentException | NamingException e) { + log.debug(e.getMessage()); + } + return (DataSource) bean.getObject(); + } + + @Primary + @Bean(name = "primaryEntityManagerFactory") + public LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory(EntityManagerFactoryBuilder builder) { + return builder + .dataSource(primaryDataSource()) + .packages("br.com.ae3tecnologia.ms.tangerino.model") + .build(); + } + + @Primary + @Bean + public PlatformTransactionManager primaryTransactionManager( + final @Qualifier("primaryEntityManagerFactory") LocalContainerEntityManagerFactoryBean primaryEntityManagerFactory) { + return new JpaTransactionManager(Objects.requireNonNull(primaryEntityManagerFactory.getObject())); + } + +} \ No newline at end of file diff --git a/src/main/resources/application-hom.yml b/src/main/resources/application-hom.yml index a6bbaf0..0cdb215 100644 --- a/src/main/resources/application-hom.yml +++ b/src/main/resources/application-hom.yml @@ -17,12 +17,4 @@ logging: spring: jpa: show-sql: false - properties: - hibernate: - format_sql: true - use_streams_for_binary: false - dialect: org.hibernate.dialect.PostgreSQLDialect - datasource: - url: jdbc:postgresql://192.168.2.15:5839/base_teste - username: kleber - password: KC$456bn + diff --git a/src/main/resources/application-prd.yml b/src/main/resources/application-prd.yml index e0f3582..238a140 100644 --- a/src/main/resources/application-prd.yml +++ b/src/main/resources/application-prd.yml @@ -17,12 +17,3 @@ logging: spring: jpa: show-sql: false - properties: - hibernate: - format_sql: true - use_streams_for_binary: false - dialect: org.hibernate.dialect.PostgreSQLDialect - datasource: - url: jdbc:postgresql://131.255.233.237:8077/sisgep - username: postgres - password: postgres diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 556d914..0d8fc24 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -6,8 +6,4 @@ spring: application: name: TangerinoMS jpa: - open-in-view: true -# jpa: -# database-platform: org.hibernate.dialect.Oracle10gDialect -# datasource: -# driver-class-name: oracle.jdbc.driver.OracleDriver \ No newline at end of file + open-in-view: true \ No newline at end of file