当前位置: 首页 > 知识库问答 >
问题:

Spring Boot scanBasePackages无法从依赖项中找到bean

云昊阳
2023-03-14
@SpringBootApplication(scanBasePackages = {"com.my.package","com.my.package.mylibrary"})
@EnableAsync
@EnableSwagger2
@ServletComponentScan
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class,
        HibernateJpaAutoConfiguration.class})
public class MySpringBootApplication {....}

因此,我为ScanBasePackages放置了这两个文件。但是Spring不能从库里找到豆子吗?

编辑:

从图书馆,我有:

package com.my.package.mylibrary.repository;
....
public interface MyRepository extends JpaRepository<..., ....> {....}
package com.my.package.controller;
....
@RestController
public class MyController {....}
Exception in thread "main" java.lang.NoClassDefFoundError: com/my/package/mylibrary/repository/MyRepository
    at com.my.package.MySpringBootApplication.main(MySpringBootApplication.java:32)
Caused by: java.lang.ClassNotFoundException: com.my.package.mylibrary.repository.MyRepository
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
"java.lang.TypeNotPresentException: Type com.my.package.mylibrary.domain.MyEntity not present

所以我为“com.my.package.mylibrary.domain”添加了@EntityScan,但这会使应用程序无限期地卡死。

共有1个答案

东方辉
2023-03-14

首先,您不需要在@SpringBootApplication中添加ScanBasePackages属性,因为基本包是com.my.package

如果package完全不同,那么您可以添加它。

如果基本包相同,Spring Boot将自动拾取bean。

将MySpringBootApplication类更新为:

@SpringBootApplication
@ServletComponentScan
public class MySpringBootApplication {....}

为异步方法执行创建单独的配置。

 @Configuration
 @EnableAsync
 public class AsynchronousConfig {.....}

为Swagger2创建一个单独的配置类。

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {....}
@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, 
DataSourceTransactionManagerAutoConfiguration.class,
HibernateJpaAutoConfiguration.class})
public class ExcludeConfigurationFile {....}
 类似资料:
  • null 我尝试在使用/gradlew clean后构建project,但没有任何帮助,我尝试使用不同版本的依赖关系,不同版本的gradle和只对java使用依赖关系,只对kotlin使用依赖关系,多次使用不同的配置,但没有任何帮助。奇怪的是,XML文件之外的一切似乎都很好,我可以很好地使用这个库中的类,但我需要用PreferenceScreen类进行布局,它不能识别它。

  • 我目前有一个Spring Boot应用程序,它依赖于Java模块。这个Java模块有一些类路径属性。当我从Spring Boot应用程序的Java模块中@autowired了一个bean,并用@bean注释定义这个bean,然后运行Spring Boot应用程序时,它将抛出错误。

  • 我已通过mvn install: install-file将jar文件添加到我的本地maven存储库中,该文件在我的本地机器上运行良好。这是我的pom中的依赖项: 在我的机器上运行mvn清洁安装时,一切正常。现在我有一个本地jenkins实例正在运行(在Windows机器上),它应该构建我的项目。构建遇到错误,jenkins说:

  • 一个月前,我可以在IntelliJ的基础上从头开始成功地构建Java应用程序,现在,我必须升级spring boot以获得一些新功能。但是,在我将spring boot的版本从2.2.2更改之后。发布到其他版本,然后单击“重新加载所有Maven项目”按钮,我会收到以下消息: 一个月前下载2.2.2还可以。释放。为什么此时更新失败?我的信息如下:MacOS 12.2,捆绑(Maven 3),Java

  • 我试图建立一个VC(VS 2008)OCX(32位)项目在Windows 8.1 64位机器。OCX正在构建中,但是在尝试使用regsvr32注册时没有加载。使用依赖沃克检查二进制文件显示MSVCR90。DLL作为缺失的依赖项之一。但是我可以看到这个dll在C:\windows\winSxs区域下的相应文件夹中可用。无法找出WinSxS无法定位DLL的原因。 报告为缺失的其他依赖项包括 API-M

  • 我和我的朋友正在做一个Java maven项目,它的设置和我们从Git得到的项目是一样的。在我的设置中,Maven正确地导入了所有依赖项,但对于我的朋友,它找不到任何依赖项。 我们尝试过的事情: 右键单击project,单击maven并单击Reimport。 我们都可以上网,所以这也不是问题。而且,Maven在IntelliJ中设置为自动导入。