java - Spring :@Component

标签 java spring

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/

相关文章:

java - 当我使用 Google Cloud Messaging 时,无法解析方法 addOnCompleteListener

java - 使用 Hystrix Feign 记录请求和响应 json 负载

spring - SpringMVC中Model和HttpServletRequest的用法有什么区别? HttpServletRequest可以完全替代Model吗?

mysql - 将 MySQL 与 Spring boot docker 镜像结合使用

java - 从另一个项目加载 AnnotationConfigApplicationContext[Eclipse]

java - 如何找到死锁的两个线程?

java - Java中参数类型旁边的3个点是什么意思?

java - JPA 是否要求数据源来自 JNDI?

java - 模拟带参数的构造函数

java - Android 将 7.5 小时添加到特定日期