我的应用程序包含以下类:
SpringMainApplication:
@SpringBootApplication
@ComponentScan(basePackages = {"com.foo"})
class com.foo.appl.SpringMainApplication {
... some code...
}
应该用于自动装配字段的接口:
interface com.foo.bar.ClassToAutowire {
}
另一个将所述接口用于字段的类:
@Component
class com.foo.appl.pack.ImplementationClass {
@Autowired
ClassToAutowire autoClass;
@Scheduled(fixedRate = 60000)
public void startStuff() {
// do something...
}
}
但该字段不会自动装配:
com.foo.appl.pack.ImplementationClass 中的字段 autoClass 需要找不到类型为“com.foo.bar.ClassToAutowire”的 bean。
行动:
考虑在你的配置中定义一个 'com.foo.bar.ClassToAutowire' 类型的 bean。
我猜 Spring 不喜欢我的包结构?
com.foo.bar.ClassToAutowire
com.foo.appl.SpringMainApplication
com.foo.appl.pack.ImplementationClass
是否@SpringBootApplication
必须在根包中并且所有组件都必须在子包中?如果是这样,我该如何解决我的“问题”,因为ClassToAutowire
它来自导入的 JAR。
当更改basePackge
为com.foo.bar
应用程序启动时,但计划的方法将不会运行。
谢谢