我的主要项目(A)包含结构:X. Y. Z
我的项目依赖于一个jar文件(B),该文件具有a.b.c包结构
项目B包含我在项目A中需要的实体。
在项目A中,我指定了以下内容。
@EnableScheduling
@ComponentScan(
basePackages = {"x.y.z", "a.b.c"},
includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Indexed.class})
})
@EntityScan(basePackages = {"x.y.z", "a.b.c"})
@SpringBootApplication
public class Application extends SpringBootServletInitializer { ...
我在项目B中的实体:a. b.c.模型.MyEntity;
import javax.persistence.*;
@Entity
@Table(
name = "my_entity"
)
@EntityListeners({AuditingEntityListener.class})
public class MyEntity { ...
但每次启动时,我都会收到相同的错误 “不是托管类型:“.我的实体”
我尝试了不同的配置,指定了不同的路径,使用了导入注解,但没有任何效果。
@Configuration
@Import({MyEntity.class})
... Not Work ...
@EntityScan(basePackages = {"x.y.z.*", "a.b.c.*"})
... Not Work ...
@EntityScan(basePackages = {"x.y.z.models.*", "a.b.c.models*"})
... Not Work ...
@ComponentScan(
basePackages = {"x.y.z.*", "a.b.c.*"},
includeFilters = {
@ComponentScan.Filter(type = FilterType.ANNOTATION, classes = {Indexed.class})
})
这总是同样的错误。但是来自项目A的依赖项被毫无问题地加载。
我还有其他项目C D E,它们也依赖于jar项目B,在相同的配置下,它们工作得很好。
1条答案
按热度按时间hs1rzwqc1#
所以,问题是这种依赖性。
项目B**(a.b.c包)中的Bean只是没有进入META-INF/spring.components**文件。
您需要移除此相依性,或为project B产生您自己的META-INF/spring.components档案。