一尘不染

javax.inject.Named注释应该用于什么?

spring

我试图了解该javax.inject软件包,但不清楚javax.inject.Named应将注释用于什么目的。Javadoc没有解释其背后的想法。

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

我正在使用Spring 3.0编写一些示例程序,通过放在@Named一个Bean上似乎将其添加到Bean工厂中,但是Javadoc的描述是如此之轻,我无法分辨这是标准行为还是特定于Spring的行为。

我的问题是:

  1. @Named和之间有什么区别@Qualifier
  2. 你应该如何告诉Runtime系统某个类在其他类中应该是可注入的,它的注释是什么?相当于@Componentspring?

阅读 881

收藏
2020-04-15

共1个答案

一尘不染

使用@Named以区分在同一范围内绑定同一类型的不同对象之间。

@Named("maxWaitTime")
public long maxWaitTimeMs;

@Named("minWaitTime")
public long minWaitTimeMs;

没有@Named限定词,注入器将不知道绑定到哪个变量的时间长。

  • 如果要创建类似@Named@Qualifier注释,请在创建它们时使用注释。

  • 如果你看一下@Named,它本身会带有注释@Qualifier

2020-04-15