[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