diff --git a/eladmin-system/src/main/java/me/zhengjie/AppRun.java b/eladmin-system/src/main/java/me/zhengjie/AppRun.java index b58bf6d..8617fd9 100644 --- a/eladmin-system/src/main/java/me/zhengjie/AppRun.java +++ b/eladmin-system/src/main/java/me/zhengjie/AppRun.java @@ -26,7 +26,10 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; +import lombok.RequiredArgsConstructor; import me.zhengjie.annotation.rest.AnonymousGetMapping; +import me.zhengjie.mapper.db1.IStoreMapper; +import me.zhengjie.mapper.db2.IStoreMapper2; import me.zhengjie.utils.SpringContextHolder; /** @@ -41,6 +44,7 @@ import me.zhengjie.utils.SpringContextHolder; @SpringBootApplication @EnableTransactionManagement @EnableJpaAuditing(auditorAwareRef = "auditorAware") +@RequiredArgsConstructor public class AppRun { public static void main(String[] args) { @@ -56,6 +60,9 @@ public class AppRun { return new SpringContextHolder(); } + final IStoreMapper iStoreMapper; + final IStoreMapper2 iStoreMapper2; + /** * 访问首页提示 * @@ -64,6 +71,8 @@ public class AppRun { @AnonymousGetMapping("/") @Transactional public String index() { + System.out.println(iStoreMapper.findByName("店1")); + System.out.println(iStoreMapper2.findByName("店1")); return "Backend service started successfully"; } } diff --git a/eladmin-system/src/main/java/me/zhengjie/config/jpa/DataSourceConfig.java.txt b/eladmin-system/src/main/java/me/zhengjie/config/DataSourceConfig.java similarity index 75% rename from eladmin-system/src/main/java/me/zhengjie/config/jpa/DataSourceConfig.java.txt rename to eladmin-system/src/main/java/me/zhengjie/config/DataSourceConfig.java index 04aaed3..6420a68 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/jpa/DataSourceConfig.java.txt +++ b/eladmin-system/src/main/java/me/zhengjie/config/DataSourceConfig.java @@ -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.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; -import javax.sql.DataSource; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; @Configuration public class DataSourceConfig { - /** - * 配置主数据源 - * - * @return - */ + + @Bean(name = "primaryDataSource") @Primary - @Bean(name = "primaryJpaDataSource") @ConfigurationProperties("spring.datasource.druid") public DataSource dataSource() { return DruidDataSourceBuilder.create().build(); } - /** - * 配置数据源 - * - * @return - */ - @Bean(name = "secondJpaDataSource") + @Bean(name = "secondDataSource") @ConfigurationProperties("spring.datasource.secondary") public DataSource secondDataSource() { return DruidDataSourceBuilder.create().build(); diff --git a/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPAPrimaryConfig.java b/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPAPrimaryConfig.java new file mode 100644 index 0000000..9cae192 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPAPrimaryConfig.java @@ -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 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()); + } +} diff --git a/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPAPrimaryConfig.java.txt b/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPAPrimaryConfig.java.txt deleted file mode 100644 index 39597c0..0000000 --- a/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPAPrimaryConfig.java.txt +++ /dev/null @@ -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 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()); - } -} diff --git a/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPASecondaryConfig.java.txt b/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPASecondaryConfig.java similarity index 86% rename from eladmin-system/src/main/java/me/zhengjie/config/jpa/JPASecondaryConfig.java.txt rename to eladmin-system/src/main/java/me/zhengjie/config/jpa/JPASecondaryConfig.java index 515b46b..4385a43 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPASecondaryConfig.java.txt +++ b/eladmin-system/src/main/java/me/zhengjie/config/jpa/JPASecondaryConfig.java @@ -21,22 +21,22 @@ import java.util.Map; /** * 实现Spring Data JPA 多数据源(本应用涉及到两个数据库)配置的文件。 * 此处是第二个数据源的配置文件。 - * Second指的是第二个数据源。可自定义名字。 - * 若是进行二次开发,在本配置文件内,需要修改的地方已加注释。 - * 此文件需要修改两个地方。 */ @Configuration @EnableTransactionManagement @EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactorySecondary", transactionManagerRef = "transactionManagerSecondary", basePackages = { - "me.zhengjie.modules.system.repository" }) + "me.zhengjie.modules.goods.repository" +}) public class JPASecondaryConfig { + @Resource private JpaProperties jpaProperties; + @Resource private HibernateProperties hibernateProperties; @Resource - @Qualifier("secondJpaDataSource") + @Qualifier("secondDataSource") private DataSource secondaryDataSource; @Bean(name = "entityManagerSecondary") @@ -51,7 +51,7 @@ public class JPASecondaryConfig { new HibernateSettings()); return builder.dataSource(secondaryDataSource) .properties(properties) - .packages("me.zhengjie.modules.system.domain") // 第二个数据源的 domain实体类包 所在位置 + .packages("me.zhengjie.modules.goods.domain") .persistenceUnit("secondaryPersistenceUnit") .build(); } diff --git a/eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigPrimary.java.txt b/eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigPrimary.java similarity index 73% rename from eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigPrimary.java.txt rename to eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigPrimary.java index 6e5cff7..b0dcc09 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigPrimary.java.txt +++ b/eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigPrimary.java @@ -7,31 +7,15 @@ import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; 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.Configuration; -import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; - @Configuration @MapperScan(basePackages = "me.zhengjie.mapper.db1.**", sqlSessionFactoryRef = "primarySqlSessionFactory") public class DataSourceConfigPrimary { - /** - * 配置主数据源 - * - * @return - */ - @Bean(name = "primaryDataSource") - @Primary - @ConfigurationProperties("spring.datasource.druid") - public DataSource dataSource() { - return DruidDataSourceBuilder.create().build(); - } @Bean(name = "primarySqlSessionFactory") - @Primary public SqlSessionFactory sqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); @@ -42,7 +26,6 @@ public class DataSourceConfigPrimary { } @Bean("primarySqlSessionTemplate") - @Primary public SqlSessionTemplate sqlSessionTemplate( @Qualifier("primarySqlSessionFactory") SqlSessionFactory sessionFactory) { return new SqlSessionTemplate(sessionFactory); diff --git a/eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigSecond.java.txt b/eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigSecond.java similarity index 77% rename from eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigSecond.java.txt rename to eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigSecond.java index e4c4ad1..b2e7d5d 100644 --- a/eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigSecond.java.txt +++ b/eladmin-system/src/main/java/me/zhengjie/config/mybatis/DataSourceConfigSecond.java @@ -7,24 +7,14 @@ import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; 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.Configuration; -import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; - @Configuration @MapperScan(basePackages = "me.zhengjie.mapper.db2.**", sqlSessionFactoryRef = "secondSqlSessionFactory") public class DataSourceConfigSecond { - @Bean(name = "secondDataSource") - @ConfigurationProperties("spring.datasource.secondary") - public DataSource dataSource() { - return DruidDataSourceBuilder.create().build(); - } - @Bean(name = "secondSqlSessionFactory") public SqlSessionFactory secondSqlSessionFactory(@Qualifier("secondDataSource") DataSource dataSource) throws Exception { @@ -36,7 +26,6 @@ public class DataSourceConfigSecond { } @Bean("secondSqlSessionTemplate") - @Primary public SqlSessionTemplate secondSqlSessionTemplate( @Qualifier("secondSqlSessionFactory") SqlSessionFactory sessionFactory) { return new SqlSessionTemplate(sessionFactory);