javax.inject.Named annotation应该用于什么?

我试图理解这个包,我不清楚注释应该用于什么。Javadoc没有解释它背后的想法。javax.injectjavax.inject.Named

Javadoc处于 http://download.oracle.com/javaee/6/api/javax/inject/Named.html

我正在使用Spring 3.0编写一些示例程序,通过放置一个bean,它似乎将其添加到Bean工厂中,但Javadoc的描述非常轻巧,我无法判断这是标准行为还是Spring特定行为。@Named

我的问题是:

  1. 和 之间有什么区别@Named@Qualifier
  2. 你应该如何告诉运行时系统一个类应该可以在其他类中注入,这是什么注释?相当于春天?@Component

更新1有一个很好的解释,在尼斯的文章中,关于和 https://dzone.com/articles/java-ee6-cdi-named-components 感谢@xmedeko链接到它下面的评论。@Named@Qualifier@Named@Qualifier


答案 1

用于区分绑定在同一作用域中的相同类型的不同对象。@Named

@Named("maxWaitTime")
public long maxWaitTimeMs;

@Named("minWaitTime")
public long minWaitTimeMs;

如果没有限定符,注入器将不知道要绑定到哪个变量的长。@Named

  • 如果要创建类似于 的批注,请在创建批注时使用批注。@Named@Qualifier

  • 如果你看一下,它本身就用 注释。@Named@Qualifier


答案 2

@Inject而不是春天的注入豆子。
而不是春天宣布一个豆子。@Autowired@Named@Component

这些 JSR-330 标准注释的扫描和检索方式与 Spring 注释相同(只要以下内容在您的类路径中)jar


推荐