Spring:@Component

Ala*_*sta 1 java spring

Spring文档以下列方式定义@Component注释:"表示带注释的类是"组件".当使用基于注释的配置和类路径扫描时,这些类被视为自动检测的候选者."

这很简洁,但并没有说太多.我知道@Component用于表示Spring将管理类生命周期(创建/销毁).我有的问题:我只需要在某个地方自动装配的类中使用它(1)或者我是否还需要在具有自动装配属性的类中使用它(2)?

(1)

@Component
class B {
}

class A {

   // @Autowired
   B b;
}
Run Code Online (Sandbox Code Playgroud)

(2)

@Component
class B {
}

@Component
class A {

  // @Autowired
  B b;
}
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 6

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

如果您的bean A没有使用@ComponentSpring语言注释或以其他方式为其所知,那么Spring将永远不会创建和管理它.因此,您必须使用注释或A在XML中定义.

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

在一天结束时,使用XML,注释或Java配置并不重要.重要的是,两个bean都应用于应用程序上下文.