ホームページ  >  記事  >  Java  >  Java EE の CDI アノテーションは依存関係の注入にどのように使用されますか?

Java EE の CDI アノテーションは依存関係の注入にどのように使用されますか?

王林
王林オリジナル
2024-05-06 11:36:02954ブラウズ

はい、Java EE での依存関係注入の CDJ アノテーションには次のものが含まれます: @Inject: 依存関係を注入します。 @Produces: 依存関係を生成するメソッドを宣言します。 @Disposes: 依存関係が解放されたときに呼び出されるメソッドを宣言します。 @Dependent: Bean のスコープをリクエスト スコープとして指定します。 @ApplicationScoped: Bean のスコープがアプリケーション スコープであることを指定します。

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

Java EE における依存性注入の CDJ アノテーション

Java Enterprise Edition (Java EE) では、依存性注入 (DI) はアプリケーション開発を簡素化する手法です。 DI を使用すると、依存関係を手動で作成および管理する代わりに、アノテーションを通じて依存関係を宣言できます。これらの注釈は、コンテナ (GlassFish サーバーなど) によって自動的に解析され、挿入されます。

CDI アノテーション

Java EE では、Context and dependency Injection (CDI) 仕様により、DI 用のアノテーションのセットが提供されます。これらのアノテーションには以下が含まれます:

  • @Inject: 依存関係を注入するために使用されます。
  • @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: 依存関係を生成するメソッドを宣言するために使用されます。

@Disposes: 依存関係が不要になったときに呼び出されるメソッドを宣言するために使用されます。

@Dependent: Bean のスコープがリクエスト スコープであることを指定するために使用されます。 @ApplicationScoped: Bean のスコープがアプリケーション スコープであることを指定するために使用されます。

実際的なケース

🎜 UserRepository インターフェースに依存する UserService クラスがあるとします。 CDI を使用すると、次の方法で依存関係を宣言できます: 🎜rrreee🎜 上記のコードでは、@Inject アノテーションは、userRepository フィールドがコンテナによって自動的に挿入される必要があることを示しています。 。 🎜rrreee🎜 この例では、@Produces アノテーションを使用して、createUserRepository メソッドが UserRepository の実装の生成を担当することを宣言します。 @PersistenceContext アノテーションは、<code>EntityManager をメソッドに挿入するために使用されます。 🎜🎜🎜結論🎜🎜🎜 CDI アノテーションは、依存関係注入を実装するためのシンプルかつ効率的な方法を提供します。これらのアノテーションを使用すると、定型コードを削減し、アプリケーションをよりモジュール化して保守しやすくすることができます。 🎜

以上がJava EE の CDI アノテーションは依存関係の注入にどのように使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。