我在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。
每个接口代理都会给出该错误
答案 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 {
}