springboot指定basePackages后项目启动报错Failed to configure a DataSource: ‘url‘ attribute is not specified...

本文介绍了SpringBoot项目中如何正确配置多模块组件扫描的问题。当项目包含多个包时,如主包和插件包,如果不正确配置@ComponentScan(basePackages)可能会导致启动失败或无法找到配置文件等问题。文章详细解释了配置不当的原因,并给出了正确的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于项目引用了额外的插件包,但插件的包名和项目包名不一致,插件包不在启动类包下,springboot不会自动扫描相关组件类。

指定了basePackages为插件包名后,启动报错(之前并未指定,说明默认扫描了启动类所在包)。

报错信息,大概是说找不到数据库配置:


***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine suitable jdbc url


Action:

Consider the following:
	If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
	If you have database settings to be loaded from a particular profile you may need to activate it (the profiles dev are currently active).

试错试了半天才恍然大悟,原来我把项目主包给弄丢了,我只配了插件的额外包,没有配项目主包路径,

导致springboot只扫描额外的插件包,项目主包不扫描,启动找不到数据库配置,真是捡了芝麻丢了西瓜!

由此能看出,指定了basePackages后,springboot只会扫描我们指定的包,而不会扫描之前默认的启动类所在包。

所以,指定basePackages时,得把需要扫描的所有包全都配置上。

最终的启动类: 

package com.ylb;

@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@ComponentScan(basePackages = { "com.ylb", "com.yilabao.plugin" })
public class ApplicationServer {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(ApplicationServer.class);
        app.addListeners(new ApplicationStartingEventListener());
        app.run(args);
    }

}

关键代码:

@ComponentScan(basePackages = { "com.ylb", "com.yilabao.plugin" })

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值