Heim  >  Artikel  >  Java  >  Wie werden die CDI-Annotationen von Java EE für die Abhängigkeitsinjektion verwendet?

Wie werden die CDI-Annotationen von Java EE für die Abhängigkeitsinjektion verwendet?

王林
王林Original
2024-05-06 11:36:02957Durchsuche

Ja, CDJ-Annotationen für die Abhängigkeitsinjektion in Java EE umfassen: @Inject: Abhängigkeiten injizieren. @Produces: Deklariert Methoden zum Erzeugen von Abhängigkeiten. @Disposes: Deklariert eine Methode, die aufgerufen werden soll, wenn eine Abhängigkeit freigegeben wird. @Dependent: Geben Sie den Bereich der Bean als Anforderungsbereich an. @ApplicationScoped: Gibt an, dass der Geltungsbereich der Bean der Anwendungsbereich ist.

Java EE的CDI注解如何用于依赖注入?

CDJ-Annotationen für Dependency Injection in Java EE

In Java Enterprise Edition (Java EE) ist Dependency Injection (DI) eine Technik, die die Anwendungsentwicklung vereinfacht. Mit DI können Sie Abhängigkeiten durch Annotationen deklarieren, anstatt Abhängigkeiten manuell zu erstellen und zu verwalten. Diese Anmerkungen werden vom Container (z. B. dem GlassFish-Server) automatisch analysiert und eingefügt.

CDI-Anmerkungen

In Java EE stellt die Spezifikation „Context and Dependency Injection“ (CDI) eine Reihe von Anmerkungen für DI bereit. Zu diesen Anmerkungen gehören:

  • @Inject: wird zum Einfügen einer Abhängigkeit verwendet.
  • @Inject:用于注入一个依赖项。
  • @Produces:用于声明一个方法产生一个依赖项。
  • @Disposes:用于声明一个方法在依赖项不再需要时被调用。
  • @Dependent:用于指定一个 bean 的作用域是请求范围。
  • @ApplicationScoped:用于指定一个 bean 的作用域是应用程序范围。

实战案例

假设我们有一个 UserService 类,它依赖于 UserRepository 接口。使用 CDI,我们可以通过以下方式声明依赖关系:

import javax.inject.Inject;

public class UserService {

    @Inject
    private UserRepository userRepository;

    // ...
}

在上面的代码中,@Inject 注解表明 userRepository 字段应该由容器自动注入。

import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

public class UserRepositoryProducer {

    @PersistenceContext
    private EntityManager em;

    @Produces
    private UserRepository createUserRepository() {
        return new UserJpaRepository(em);
    }
}

在这个示例中,@Produces 注解用于声明 createUserRepository 方法负责产生 UserRepository 的实现,而 @PersistenceContext 注解用于将 EntityManager@Produces: wird verwendet, um eine Methode zum Generieren einer Abhängigkeit zu deklarieren.

@Disposes: Wird verwendet, um eine Methode zu deklarieren, die aufgerufen werden soll, wenn die Abhängigkeit nicht mehr benötigt wird.

@Dependent: Wird verwendet, um anzugeben, dass der Bereich einer Bean der Anforderungsbereich ist. @ApplicationScoped: Wird verwendet, um anzugeben, dass der Bereich einer Bean der Anwendungsbereich ist.

Praktischer Fall

🎜Angenommen, wir haben eine UserService-Klasse, die von der UserRepository-Schnittstelle abhängt. Mit CDI können wir Abhängigkeiten auf folgende Weise deklarieren: 🎜rrreee🎜 Im obigen Code gibt die Annotation @Inject an, dass das Feld userRepository automatisch vom Container eingefügt werden soll . 🎜rrreee🎜In diesem Beispiel wird die Annotation @Produces verwendet, um zu deklarieren, dass die Methode createUserRepository für die Erstellung der Implementierung von UserRepository verantwortlich ist Die Annotation @PersistenceContextEntityManager in die Methode einzufügen. 🎜🎜🎜Fazit🎜🎜🎜CDI-Annotationen bieten eine einfache und effiziente Möglichkeit, die Abhängigkeitsinjektion zu implementieren. Durch die Verwendung dieser Annotationen können Sie den Boilerplate-Code reduzieren und Ihre Anwendung modularer und wartbarer machen. 🎜

Das obige ist der detaillierte Inhalt vonWie werden die CDI-Annotationen von Java EE für die Abhängigkeitsinjektion verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Wo speichert Eclipse Dateien?Nächster Artikel:Wo speichert Eclipse Dateien?