Spring 文档以下列方式定义@Component 注解:“指示注解的类是一个“组件”。在使用基于注解的配置和类路径扫描时,此类类被视为自动检测的候选者。”
这句话很简洁,但并没有说很多。我理解 @Component 用于指示类生命周期(创建/销毁)将由 Spring 管理。我的问题是:我只需要在将在某处 Autowiring 的类中使用它 (1),还是我还需要在具有 Autowiring 属性的类中使用它 (2)?
(1)
@Component
class B {
}
class A {
// @Autowired
B b;
}
(2)
@Component
class B {
}
@Component
class A {
// @Autowired
B b;
}
最佳答案
嗯,严格来说你不必在任何地方使用,你可以像过去一样在 XML 中定义 beans。您也可以像过去一样使用 @Service
或 @Repository
。但是回到你的问题:
如果您的 bean A
未使用 @Component
注释或 Spring 上下文已知,则它永远不会由 Spring 创建和管理。因此,您要么必须使用注释,要么在 XML 中定义 A
。
B
也是如此。如果您希望它成为 Autowiring 的主题,Spring 必须知道它 - 通过注释扫描或 XML。
归根结底,使用 XML、注释还是 Java 配置并不重要。重要的是这两个 bean 都为应用程序上下文所知。
关于java - Spring :@Component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919738/