Merge branch 'zyh' into zyj
# Conflicts: # yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java
This commit is contained in:
+69
@@ -0,0 +1,69 @@
|
||||
package cn.iocoder.yudao.framework.quartz.config;
|
||||
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
|
||||
import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.quartz.*;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.TransactionManager;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
@Configuration
|
||||
@ConditionalOnProperty(prefix = "spring.quartz", name = "job-store-type", havingValue = "jdbc")
|
||||
@Import(DatabaseInitializationDependencyConfigurer.class)
|
||||
@EnableConfigurationProperties(QuartzProperties.class)
|
||||
@AutoConfigureAfter({ DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
|
||||
LiquibaseAutoConfiguration.class, FlywayAutoConfiguration.class })
|
||||
public class JdbcStoreTypeConfiguration {
|
||||
|
||||
|
||||
@Bean
|
||||
@Order(0)
|
||||
public SchedulerFactoryBeanCustomizer dataSourceCustomizer(QuartzProperties properties,
|
||||
DataSource dataSource,
|
||||
@QuartzDataSource ObjectProvider<DataSource> quartzDataSource,
|
||||
TransactionManager transactionManager
|
||||
) {
|
||||
return (schedulerFactoryBean) -> {
|
||||
DataSource dataSourceToUse = getDataSource(dataSource, quartzDataSource);
|
||||
schedulerFactoryBean.setDataSource(dataSourceToUse);
|
||||
schedulerFactoryBean.setTransactionManager((PlatformTransactionManager) transactionManager);
|
||||
};
|
||||
}
|
||||
|
||||
private DataSource getDataSource(DataSource dataSource, ObjectProvider<DataSource> quartzDataSource) {
|
||||
DataSource dataSourceIfAvailable = quartzDataSource.getIfAvailable();
|
||||
return (dataSourceIfAvailable != null) ? dataSourceIfAvailable : dataSource;
|
||||
}
|
||||
|
||||
private PlatformTransactionManager getTransactionManager(
|
||||
ObjectProvider<PlatformTransactionManager> transactionManager,
|
||||
ObjectProvider<PlatformTransactionManager> quartzTransactionManager) {
|
||||
PlatformTransactionManager transactionManagerIfAvailable = quartzTransactionManager.getIfAvailable();
|
||||
return (transactionManagerIfAvailable != null) ? transactionManagerIfAvailable
|
||||
: transactionManager.getIfUnique();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public QuartzDataSourceInitializer quartzDataSourceInitializer(DataSource dataSource,
|
||||
@QuartzDataSource ObjectProvider<DataSource> quartzDataSource, ResourceLoader resourceLoader,
|
||||
QuartzProperties properties) {
|
||||
DataSource dataSourceToUse = getDataSource(dataSource, quartzDataSource);
|
||||
return new QuartzDataSourceInitializer(dataSourceToUse, resourceLoader, properties);
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -1,3 +1,4 @@
|
||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
||||
cn.iocoder.yudao.framework.quartz.config.YudaoQuartzAutoConfiguration,\
|
||||
cn.iocoder.yudao.framework.quartz.config.YudaoAsyncAutoConfiguration
|
||||
cn.iocoder.yudao.framework.quartz.config.YudaoAsyncAutoConfiguration,\
|
||||
cn.iocoder.yudao.framework.quartz.config.JdbcStoreTypeConfiguration
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
||||
|
||||
<properties>
|
||||
<mysql.version>5.1.46</mysql.version>
|
||||
<mysql.version>8.0.23</mysql.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@@ -46,10 +46,8 @@
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <!-- 多数据源 -->
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
+37
-13
@@ -1,14 +1,15 @@
|
||||
package cn.iocoder.yudao.framework.mybatis.config;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.handler.DefaultDBFieldHandler;
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.alibaba.druid.stat.DruidDataSourceStatManager;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.core.config.GlobalConfig;
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
@@ -17,11 +18,16 @@ import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.mybatis.spring.annotation.MapperScans;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.boot.autoconfigure.quartz.QuartzDataSource;
|
||||
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.Resource;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.TransactionManager;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.util.Arrays;
|
||||
@@ -55,36 +61,48 @@ public class YudaoMybatisAutoConfiguration {
|
||||
return new DefaultDBFieldHandler(); // 自动填充参数类
|
||||
}
|
||||
|
||||
@Bean("dataSource")
|
||||
@QuartzDataSource
|
||||
@ConfigurationProperties("spring.datasource.dynamic.datasource.master")
|
||||
public DataSource masterDataSource(){
|
||||
return new DruidDataSource();
|
||||
}
|
||||
@Bean
|
||||
@Primary
|
||||
public SqlSessionFactory sqlSessionFactoryMaster(DynamicDataSourceProvider dynamicDataSourceProvider) throws Exception {
|
||||
//手动处理下原来的sqlsessionfactory
|
||||
public SqlSessionFactory sqlSessionFactoryMaster(@Qualifier("dataSource") DataSource dataSource) throws Exception {
|
||||
MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
|
||||
factory.setTypeEnumsPackage("cn.iocoder.yudao.module.farm.enums");
|
||||
Map<String, DataSource> map = dynamicDataSourceProvider.loadDataSources();
|
||||
factory.setDataSource(map.get("master"));
|
||||
factory.setDataSource(dataSource);
|
||||
return getSqlSessionFactory(factory);
|
||||
}
|
||||
|
||||
@Bean("bxgDataSource")
|
||||
@ConfigurationProperties("spring.datasource.dynamic.datasource.bxg")
|
||||
public DataSource bxgDataSource(){
|
||||
return new DruidDataSource();
|
||||
}
|
||||
|
||||
@Bean("shangcheng")
|
||||
public SqlSessionFactory sqlSessionFactory(DynamicDataSourceProvider dynamicDataSourceProvider) throws Exception {
|
||||
public SqlSessionFactory sqlSessionFactory(@Qualifier("bxgDataSource") DataSource dataSource) throws Exception {
|
||||
MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
|
||||
Map<String, DataSource> map = dynamicDataSourceProvider.loadDataSources();
|
||||
factory.setDataSource(map.get("bxg"));
|
||||
factory.setDataSource(dataSource);
|
||||
return getSqlSessionFactory(factory);
|
||||
}
|
||||
|
||||
@Bean("erpDataSource")
|
||||
@ConfigurationProperties("spring.datasource.dynamic.datasource.erp")
|
||||
public DataSource erpDataSource(){
|
||||
return new DruidDataSource();
|
||||
}
|
||||
@Bean("erp")
|
||||
public SqlSessionFactory erpSqlSessionFactory(DynamicDataSourceProvider dynamicDataSourceProvider) throws Exception {
|
||||
public SqlSessionFactory erpSqlSessionFactory(@Qualifier("erpDataSource") DataSource dataSource) throws Exception {
|
||||
MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean();
|
||||
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:/erp_mapper/*.xml");
|
||||
Arrays.stream(resources).forEach(resource -> {
|
||||
log.info("erp mapper:{}",resource.getFilename());
|
||||
});
|
||||
factory.setMapperLocations(resources);
|
||||
Map<String, DataSource> map = dynamicDataSourceProvider.loadDataSources();
|
||||
DataSource dataSource = map.get("erp");
|
||||
factory.setDataSource(map.get("erp"));
|
||||
factory.setDataSource(dataSource);
|
||||
return getSqlSessionFactory(factory);
|
||||
}
|
||||
|
||||
@@ -101,4 +119,10 @@ public class YudaoMybatisAutoConfiguration {
|
||||
return factory.getObject();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public TransactionManager transactionManager(DataSource dataSource){
|
||||
DataSourceTransactionManager manager = new DataSourceTransactionManager();
|
||||
manager.setDataSource(dataSource);
|
||||
return manager;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user