当我启动我的spring boot应用程序时,它显示以下错误:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.这是我的数据源配置:
spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
## master
spring.datasource.druid.illidan.master.name = primary_db
spring.datasource.druid.illidan.master.url = jdbc:mysql://127.0.0.1:3309/report-fat?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false&verifyServerCertificate=false
spring.datasource.druid.illidan.master.username = root
spring.datasource.druid.illidan.master.password = LogSsDk87Fm2RXSVHMnwjvtA5Nncs2kT7nWrRkB06BcBNPwyTnaf60jNG+ENeyuhYm+X1fWj59XHFiXqiw==
spring.datasource.druid.illidan.master.connection-properties = config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKwORT+pNusNtC433Kdmk18WTYbxu0gGAWBccQrK+h0PHElZrEsJDqj9yvNq2Rwzw6d/YwECio3bS+yMCAwEAAQ==
spring.datasource.druid.illidan.master.driver-class-name = com.mysql.cj.jdbc.Driver
#
# slave
spring.datasource.druid.illidan.slave.name = primary_db
spring.datasource.druid.illidan.slave.url = jdbc:mysql://127.0.0.1:3309/report-fat?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false&verifyServerCertificate=false
spring.datasource.druid.illidan.slave.username = root
spring.datasource.druid.illidan.slave.password = LogSsDk87Fm2RXSVHMnwjvtA5Nncs2kRT7nWrRkB06BcBNPwyTnbd+af60jNG+ENeyuhYm+X1fWj59XHFiXqiw==
spring.datasource.druid.illidan.slave.connection-properties = config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKwORT+pNusNtC433Kdmk18WTYbxu0gGAWBccQrK+h0PHElZrEsJDqj9yvNq2Rwzwx9PoWRn6d/YwECio3bS+yMCAwEAAQ==
spring.datasource.druid.illidan.slave.driver-class-name = com.mysql.cj.jdbc.Driver这是我的数据源配置:
package com.sportswin.soa.illidan.config;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.sportswin.soa.misc.config.db.ReadWriteSplitRoutingDataSource;
import com.sportswin.soa.misc.constant.db.ConstantPool;
import com.sportswin.soa.misc.interceptor.db.DefaultTimeInterceptor;
import com.sportswin.soa.misc.spring.aspect.db.UseSlaveAspect;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author dolphin
*/
@Configuration
@MapperScan(basePackages = {"com.sportswin.soa.illidan.dao"}, sqlSessionTemplateRef = "sqlSessionTemplate")
public class DataSourceConfig {
/**
* 数据库连接池类型
*/
@Value("${spring.datasource.type}")
private Class<? extends DataSource> dataSourceType;
@Bean(name = "dataSource")
@Qualifier(value = "dataSource")
@Primary
@DependsOn({ "masterDataSource", "slaveDataSource" })
public DataSource dataSource(@Qualifier("masterDataSource") DataSource masterDataSource,
@Qualifier("slaveDataSource") DataSource slaveDataSource) {
System.out.println(masterDataSource.toString());
System.out.println(slaveDataSource.toString());
ReadWriteSplitRoutingDataSource writeSplitRoutingDataSource = new ReadWriteSplitRoutingDataSource();
Map<Object, Object> targetDataSources = new HashMap<Object, Object>();
targetDataSources.put(ConstantPool.MASTER_KEY, masterDataSource);
targetDataSources.put(ConstantPool.SLAVE_KEY, slaveDataSource);
writeSplitRoutingDataSource.setTargetDataSources(targetDataSources);
writeSplitRoutingDataSource.setDefaultTargetDataSource(masterDataSource);
List<String> slaveDataSourceNames = new ArrayList<String>();
slaveDataSourceNames.add(ConstantPool.SLAVE_KEY);
UseSlaveAspect.setSlaveDataSourceNames(slaveDataSourceNames);
return writeSplitRoutingDataSource;
}
/**
* 主数据库(写数据库)
* @return
*/
@Bean(name = "masterDataSource", destroyMethod = "close", initMethod = "init")
@ConfigurationProperties(prefix = "spring.datasource.druid.illidan.master")
public DataSource masterDataSource() {
System.out.println("主库");
return DruidDataSourceBuilder.create().build();
}
/**
* 从数据库1(只读数据库)
* @return
*/
@Bean(name = "slaveDataSource", destroyMethod = "close", initMethod = "init")
@ConfigurationProperties(prefix = "spring.datasource.druid.illidan.slave")
public DataSource slaveDataSource(){
System.out.println("从库");
return DruidDataSourceBuilder.create().build();
}
@Autowired
private PaginationInterceptor paginationInterceptor;
@Autowired
private DefaultTimeInterceptor defaultTimeInterceptor;
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setConfigLocation(new PathMatchingResourcePatternResolver().getResource("classpath:mybatis/mybatis-config.xml"));
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/*/*.xml"));
Interceptor[] plugins = {paginationInterceptor,defaultTimeInterceptor};
bean.setPlugins(plugins);
return bean.getObject();
}
@Bean(name = "transactionManager")
public DataSourceTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "sqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}为什么会发生这种情况,我应该做些什么来修复它?
发布于 2021-02-24 16:28:12
您是否可以尝试在每个数据源中移动您的数据源类型。
remove it from here -> spring.datasource.type = com.alibaba.druid.pool.DruidDataSource
## master
spring.datasource.druid.illidan.master.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.illidan.master.name = primary_db
spring.datasource.druid.illidan.master.url = jdbc:mysql://127.0.0.1:3309/report-fat?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false&verifyServerCertificate=false
spring.datasource.druid.illidan.master.username = root
spring.datasource.druid.illidan.master.password = LogSsDk87Fm2RXSVHMnwjvtA5Nncs2kT7nWrRkB06BcBNPwyTnaf60jNG+ENeyuhYm+X1fWj59XHFiXqiw==
spring.datasource.druid.illidan.master.connection-properties = config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKwORT+pNusNtC433Kdmk18WTYbxu0gGAWBccQrK+h0PHElZrEsJDqj9yvNq2Rwzw6d/YwECio3bS+yMCAwEAAQ==
spring.datasource.druid.illidan.master.driver-class-name = com.mysql.cj.jdbc.Driver
#
# slave
spring.datasource.druid.illidan.slave.type = com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.illidan.slave.name = primary_db
spring.datasource.druid.illidan.slave.url = jdbc:mysql://127.0.0.1:3309/report-fat?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false&verifyServerCertificate=false
spring.datasource.druid.illidan.slave.username = root
spring.datasource.druid.illidan.slave.password = LogSsDk87Fm2RXSVHMnwjvtA5Nncs2kRT7nWrRkB06BcBNPwyTnbd+af60jNG+ENeyuhYm+X1fWj59XHFiXqiw==
spring.datasource.druid.illidan.slave.connection-properties = config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKwORT+pNusNtC433Kdmk18WTYbxu0gGAWBccQrK+h0PHElZrEsJDqj9yvNq2Rwzwx9PoWRn6d/YwECio3bS+yMCAwEAAQ==
spring.datasource.druid.illidan.slave.driver-class-name = com.mysql.cj.jdbc.Driverhttps://stackoverflow.com/questions/66346995
复制相似问题