SpringBootApplication scanBasePackages不读取子包

时间:2019-04-06 16:42:59

标签: java spring-boot

我在nexus上发布了一个公共库,该库具有程序包ID

x.xx.common

它包含常见的假客户端代理接口的子包

使用此库的项目具有程序包ID。

x.xx.account 
x.xx.device

每个项目的根都有其应用程序类

x.xx.account.AppClass
x.xx.device.AppClass

每个此类都有

@SpringBootApplication(scanBasePackages = {"x.xx"})

由于某些原因,两个项目在子包下都看不到任何代理接口

x.xx.common.proxy
x.xx.common.configuration

我尝试将代理接口直接移到主软件包下

x.xx.common

但它也失败了

x.xx.common.service.impl.AuditServiceImpl中的构造函数的参数0需要找不到类型为'x.xx.common.LogProxy'的bean。

每个接口代理都会给出该错误

2 个答案:

答案 0 :(得分:1)

将注释添加到要扫描的子包类中。分别将诸如@Component@Service@Repository之类的注释添加到类中。 对于注释: @SpringBootApplication(scanBasePackages = {"x.xx"})

假设子包Abc中有一个名为x.xx的类,因此将注释@Component添加到该类中。

@Component class Abc{}

这将有助于阅读子包类。

要详细了解上述注释之间的区别:What's the difference between @Component, @Repository & @Service annotations in Spring?

答案 1 :(得分:0)

我已经弄清楚了,显然AppClass @EnableFeignClients也需要添加基类。

因此,对于遇到相同问题的任何人,我的AppClass现在都具有以下注释

@SpringBootApplication(scanBasePackages = {"x.xx"})
@EnableFeignClients(basePackages= {"x.xx"})
public class AppClass {
}