【发布时间】:2020-10-02 21:45:07
【问题描述】:
我有以下内容:
@SpringBootApplication(scanBasePackages = {"com.my.package","com.my.package.mylibrary"})
@EnableAsync
@EnableSwagger2
@ServletComponentScan
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class,
HibernateJpaAutoConfiguration.class})
public class MySpringBootApplication {....}
这个应用程序有包com.my.package,它还有一个包含我想在这个应用程序中自动装配的spring bean的库依赖项,这些bean在库内的包com.my.package.mylibrary中。
所以我把两者都放在scanBasePackages 上。但是 Spring 无法从库中找到 bean?
编辑:
从图书馆,我有:
package com.my.package.mylibrary.repository;
....
public interface MyRepository extends JpaRepository<..., ....> {....}
在申请中,我有:
package com.my.package.controller;
....
@RestController
public class MyController {....}
MySpringBootApplication 驻留在 com.my.package 中。
错误:
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)
我为存储库包添加了@EnableJpaRepositories。现在我看到与 MyRepository 所基于的实体 MyEntity 相关的错误。
"java.lang.TypeNotPresentException: Type com.my.package.mylibrary.domain.MyEntity not present
所以我为“com.my.package.mylibrary.domain”添加了@EntityScan,但这会使应用程序无限卡住。
【问题讨论】:
-
让我们在包
com.my.package,com.my.package.mylibrary中显示几个类! -
请添加显示的错误信息
-
@SpringBootApplication 注解等效于使用 Configuration、EnableAutoConfiguration 和 ComponentScan 及其默认属性:[...]。如果没有定义特定的包,将从声明该注解的类的包开始扫描。
-
但是它无法检测到依赖jar中的bean。
标签: java spring spring-boot