main
xingzi 2 years ago
parent af3a894c14
commit 0e0c0bea32

@ -26,7 +26,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import me.zhengjie.annotation.rest.AnonymousGetMapping; import me.zhengjie.annotation.rest.AnonymousGetMapping;
import me.zhengjie.mapper.db1.IStoreMapper;
import me.zhengjie.mapper.db2.IStoreMapper2;
import me.zhengjie.utils.SpringContextHolder; import me.zhengjie.utils.SpringContextHolder;
/** /**
@ -41,6 +44,7 @@ import me.zhengjie.utils.SpringContextHolder;
@SpringBootApplication @SpringBootApplication
@EnableTransactionManagement @EnableTransactionManagement
@EnableJpaAuditing(auditorAwareRef = "auditorAware") @EnableJpaAuditing(auditorAwareRef = "auditorAware")
@RequiredArgsConstructor
public class AppRun { public class AppRun {
public static void main(String[] args) { public static void main(String[] args) {
@ -56,6 +60,9 @@ public class AppRun {
return new SpringContextHolder(); return new SpringContextHolder();
} }
final IStoreMapper iStoreMapper;
final IStoreMapper2 iStoreMapper2;
/** /**
* 访 * 访
* *
@ -64,6 +71,8 @@ public class AppRun {
@AnonymousGetMapping("/") @AnonymousGetMapping("/")
@Transactional @Transactional
public String index() { public String index() {
System.out.println(iStoreMapper.findByName("店1"));
System.out.println(iStoreMapper2.findByName("店1"));
return "Backend service started successfully"; return "Backend service started successfully";
} }
} }

@ -1,33 +1,25 @@
package me.zhengjie.config.jpa; package me.zhengjie.config;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
@Configuration @Configuration
public class DataSourceConfig { public class DataSourceConfig {
/**
* @Bean(name = "primaryDataSource")
*
* @return
*/
@Primary @Primary
@Bean(name = "primaryJpaDataSource")
@ConfigurationProperties("spring.datasource.druid") @ConfigurationProperties("spring.datasource.druid")
public DataSource dataSource() { public DataSource dataSource() {
return DruidDataSourceBuilder.create().build(); return DruidDataSourceBuilder.create().build();
} }
/** @Bean(name = "secondDataSource")
*
*
* @return
*/
@Bean(name = "secondJpaDataSource")
@ConfigurationProperties("spring.datasource.secondary") @ConfigurationProperties("spring.datasource.secondary")
public DataSource secondDataSource() { public DataSource secondDataSource() {
return DruidDataSourceBuilder.create().build(); return DruidDataSourceBuilder.create().build();

@ -0,0 +1,83 @@
package me.zhengjie.config.jpa;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
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.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactoryPrimary", transactionManagerRef = "transactionManagerPrimary", basePackages = {
"me.zhengjie.repository",
"me.zhengjie.modules.company.repository",
"me.zhengjie.modules.flow.repository",
// "me.zhengjie.modules.goods.repository",
"me.zhengjie.modules.mnt.repository",
"me.zhengjie.modules.quartz.repository",
"me.zhengjie.modules.security.repository",
"me.zhengjie.modules.store.repository",
"me.zhengjie.modules.system.repository",
"me.zhengjie.modules.supplier.repository"
})
public class JPAPrimaryConfig {
@Autowired
private JpaProperties jpaProperties;
@Autowired
@Qualifier("primaryDataSource")
private DataSource primaryDataSource;
@Autowired
private HibernateProperties hibernateProperties;
@Bean(name = "entityManagerFactoryPrimary")
@Primary
public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(EntityManagerFactoryBuilder builder) {
System.out.println(hibernateProperties);
Map<String, Object> properties = hibernateProperties.determineHibernateProperties(
jpaProperties.getProperties(),
new HibernateSettings());
return builder.dataSource(primaryDataSource).properties(properties)
.packages(
"me.zhengjie.domain",
"me.zhengjie.modules.company.domain",
"me.zhengjie.modules.flow.domain",
// "me.zhengjie.modules.goods.domain",
"me.zhengjie.modules.mnt.domain",
"me.zhengjie.modules.quartz.domain",
"me.zhengjie.modules.security.domain",
"me.zhengjie.modules.store.domain",
"me.zhengjie.modules.system.domain",
"me.zhengjie.modules.supplier.domain")
.persistenceUnit("primaryPersistenceUnit").build();
}
@Primary
@Bean(name = "entityManagerPrimary")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
}
@Primary
@Bean(name = "transactionManagerPrimary")
public PlatformTransactionManager transactionManagerPrimary(
EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());
}
}

@ -1,62 +0,0 @@
package me.zhengjie.config.jpa;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
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.data.jpa.repository.config.EnableJpaRepositories;
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.annotation.Resource;
import javax.persistence.EntityManager;
import javax.sql.DataSource;
import java.util.Map;
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactoryPrimary", transactionManagerRef = "transactionManagerPrimary", basePackages = {
"me.zhengjie.repository", "me.zhengjie.modules.quartz.repository", "me.zhengjie.modules.mnt.repository",
"me.zhengjie.modules.company.repository", "me.zhengjie.modules.flow.repository",
"me.zhengjie.modules.goods.repository", "me.zhengjie.modules.supplier.repository" })
public class JPAPrimaryConfig {
@Resource
private JpaProperties jpaProperties;
@Resource
private HibernateProperties hibernateProperties;
@Resource
@Qualifier("primaryJpaDataSource")
private DataSource primaryDataSource;
@Primary
@Bean(name = "entityManagerPrimary")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
}
@Primary
@Bean(name = "entityManagerFactoryPrimary")
public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary(EntityManagerFactoryBuilder builder) {
Map<String, Object> properties = hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(),
new HibernateSettings());
return builder.dataSource(primaryDataSource).properties(properties)
.packages("me.zhengjie.domain", "me.zhengjie.modules.quartz.domain", "me.zhengjie.modules.mnt.domain")
.persistenceUnit("primaryPersistenceUnit").build();
}
@Primary
@Bean(name = "transactionManagerPrimary")
public PlatformTransactionManager transactionManagerPrimary(
EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject());
}
}

@ -21,22 +21,22 @@ import java.util.Map;
/** /**
* Spring Data JPA * Spring Data JPA
* *
* Second
*
*
*/ */
@Configuration @Configuration
@EnableTransactionManagement @EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactorySecondary", transactionManagerRef = "transactionManagerSecondary", basePackages = { @EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactorySecondary", transactionManagerRef = "transactionManagerSecondary", basePackages = {
"me.zhengjie.modules.system.repository" }) "me.zhengjie.modules.goods.repository"
})
public class JPASecondaryConfig { public class JPASecondaryConfig {
@Resource @Resource
private JpaProperties jpaProperties; private JpaProperties jpaProperties;
@Resource @Resource
private HibernateProperties hibernateProperties; private HibernateProperties hibernateProperties;
@Resource @Resource
@Qualifier("secondJpaDataSource") @Qualifier("secondDataSource")
private DataSource secondaryDataSource; private DataSource secondaryDataSource;
@Bean(name = "entityManagerSecondary") @Bean(name = "entityManagerSecondary")
@ -51,7 +51,7 @@ public class JPASecondaryConfig {
new HibernateSettings()); new HibernateSettings());
return builder.dataSource(secondaryDataSource) return builder.dataSource(secondaryDataSource)
.properties(properties) .properties(properties)
.packages("me.zhengjie.modules.system.domain") // 第二个数据源的 domain实体类包 所在位置 .packages("me.zhengjie.modules.goods.domain")
.persistenceUnit("secondaryPersistenceUnit") .persistenceUnit("secondaryPersistenceUnit")
.build(); .build();
} }

@ -7,31 +7,15 @@ import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
@Configuration @Configuration
@MapperScan(basePackages = "me.zhengjie.mapper.db1.**", sqlSessionFactoryRef = "primarySqlSessionFactory") @MapperScan(basePackages = "me.zhengjie.mapper.db1.**", sqlSessionFactoryRef = "primarySqlSessionFactory")
public class DataSourceConfigPrimary { public class DataSourceConfigPrimary {
/**
*
*
* @return
*/
@Bean(name = "primaryDataSource")
@Primary
@ConfigurationProperties("spring.datasource.druid")
public DataSource dataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "primarySqlSessionFactory") @Bean(name = "primarySqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) public SqlSessionFactory sqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource)
throws Exception { throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
@ -42,7 +26,6 @@ public class DataSourceConfigPrimary {
} }
@Bean("primarySqlSessionTemplate") @Bean("primarySqlSessionTemplate")
@Primary
public SqlSessionTemplate sqlSessionTemplate( public SqlSessionTemplate sqlSessionTemplate(
@Qualifier("primarySqlSessionFactory") SqlSessionFactory sessionFactory) { @Qualifier("primarySqlSessionFactory") SqlSessionFactory sessionFactory) {
return new SqlSessionTemplate(sessionFactory); return new SqlSessionTemplate(sessionFactory);

@ -7,24 +7,14 @@ import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
@Configuration @Configuration
@MapperScan(basePackages = "me.zhengjie.mapper.db2.**", sqlSessionFactoryRef = "secondSqlSessionFactory") @MapperScan(basePackages = "me.zhengjie.mapper.db2.**", sqlSessionFactoryRef = "secondSqlSessionFactory")
public class DataSourceConfigSecond { public class DataSourceConfigSecond {
@Bean(name = "secondDataSource")
@ConfigurationProperties("spring.datasource.secondary")
public DataSource dataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "secondSqlSessionFactory") @Bean(name = "secondSqlSessionFactory")
public SqlSessionFactory secondSqlSessionFactory(@Qualifier("secondDataSource") DataSource dataSource) public SqlSessionFactory secondSqlSessionFactory(@Qualifier("secondDataSource") DataSource dataSource)
throws Exception { throws Exception {
@ -36,7 +26,6 @@ public class DataSourceConfigSecond {
} }
@Bean("secondSqlSessionTemplate") @Bean("secondSqlSessionTemplate")
@Primary
public SqlSessionTemplate secondSqlSessionTemplate( public SqlSessionTemplate secondSqlSessionTemplate(
@Qualifier("secondSqlSessionFactory") SqlSessionFactory sessionFactory) { @Qualifier("secondSqlSessionFactory") SqlSessionFactory sessionFactory) {
return new SqlSessionTemplate(sessionFactory); return new SqlSessionTemplate(sessionFactory);
Loading…
Cancel
Save