Co to jest javax.wstrzyknięcie.Nazwa adnotacji ma być używana do?

Próbuję zrozumieć Pakiet javax.inject i nie wiem Do czego powinna być używana adnotacja javax.inject.Named. Javadoc nie wyjaśnia idei, która za tym stoi.

Javadoc jest na http://download.oracle.com/javaee/6/api/javax/inject/Named.html

Używam Spring 3.0 do pisania przykładowych programów, umieszczając {[2] } na fasoli wydaje się dodawać ją do fabryki fasoli, ale Opis Javadoc jest tak lekki, że nie mogę powiedzieć, czy jest to zachowanie standardowe lub zachowanie specyficzne dla wiosny.

Moje pytania to:

  1. Jaka jest różnica między @Named a @Qualifier
  2. Jak masz powiedzieć systemowi Runtime, że klasa powinna być iniekcyjna w innych klasach jaka jest adnotacja do tego? Odpowiednik @Component na wiosnę?

Update 1 istnieje doskonałe wyjaśnienie @Named i @Qualifier w Nice artykuł o @Named i @Qualifier http://java.dzone.com/articles/java-ee6-cdi-named-components Dzięki @xmedeko za linkowanie do niego komentarza poniżej.

Author: JeroenHoek, 2011-03-24

4 answers

Użyj @Named, aby odróżnić różne obiekty tego samego typu związane w tym samym zakresie.

@Named("maxWaitTime")
public long maxWaitTimeMs;

@Named("minWaitTime")
public long minWaitTimeMs;

Bez kwalifikatora @ Named, wtryskiwacz nie wiedziałby, którą długość powiązać z jaką zmienną.

Jeśli chcesz utworzyć adnotacje zachowujące się jak @ Named, użyj adnotacji @ Qualifier podczas ich tworzenia. Jeśli spojrzysz na @Named, sam jest opatrzony adnotacją @ Qualifier.

 60
Author: sbridges,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-16 15:34:25

@Inject zamiast sprężyny @Autowired wstrzyknąć fasolkę.
@Named zamiast Spring ' s @Component, aby zadeklarować fasolę.

Te JSR-330 standardowe adnotacje są skanowane i pobierane w taki sam sposób, jak adnotacja Wiosenna (o ile następująca jar znajduje się w twojej ścieżce klasowej)

 37
Author: Nadav Finish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-29 14:00:08

Odnośnie #2, zgodnie ze specyfikacją JSR-330:

Ten pakiet dostarcza zależności adnotacje Wtryskowe, które umożliwiają klasy przenośne, ale pozostawia Konfiguracja zależności zewnętrznych w górę do wykonania wtryskiwacza.

Więc to od dostawcy zależy, które obiekty są dostępne do zastrzyku. W przypadku wiosny jest to cała fasola Wiosenna. A każda klasa z adnotacjami JSR-330 jest automatycznie dodawana jako fasolka Wiosenna podczas używania an Adnotationconfigapplicationkontekst.

 7
Author: sourcedelica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-24 14:04:41

Główną rolą adnotacji @ Named jest zdefiniowanie bean w celu rozwiązywania poleceń EL w aplikacji, zwykle za pomocą JSF el resolvers. Wtrysk można wykonywać używając nazw, ale nie tak miało działać Wtrysk w CDI, ponieważ CDI daje nam znacznie bogatszy sposób wyrażania punktów wtrysku i fasoli, które mają być wtryskiwane.

 4
Author: abbas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-30 01:39:41