2

Spring 文档以下列方式定义@Component 注解:“表明一个注解的类是一个‘组件’。当使用基于注解的配置和类路径扫描时,这些类被认为是自动检测的候选对象。”

这很简洁,但并没有说太多。我了解 @Component 用于指示类生命周期(创建/销毁)将由 Spring 管理。我的问题是:我只需要在将在某处自动装配的类中使用它(1),还是我还需要在具有自动装配属性的类中使用它(2)?

(1)

@Component
class B {
}

class A {

   // @Autowired
   B b;
}

(2)

@Component
class B {
}

@Component
class A {

  // @Autowired
  B b;
}
4

1 回答 1

6

好吧,严格来说,您不必在任何地方使用,您可以像过去一样在 XML 中定义 bean。您也可以在过去使用@Service或喜欢。@Repository但回到你的问题:

如果您的 beanA没有使用@ComponentSpring 上下文进行注释或以其他方式已知,则 Spring 将永远不会创建和管理它。因此,您要么必须使用注释,要么必须A在 XML 中定义。

这也是如此B。如果您希望它成为自动装配的主题,则 Spring 必须知道它 - 通过注释扫描或 XML。

归根结底,使用 XML、注释还是 Java 配置并不重要。重要的是,应用程序上下文都知道这两个 bean。

于 2012-12-17T18:22:20.843 回答