[FEAT] configuração dos datasources
parent
0c0bfd20c0
commit
8ac88f6012
@ -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()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue