Rumah >Java >javaTutorial >Bagaimanakah anotasi CDI Java EE digunakan untuk suntikan pergantungan?
Ya, anotasi CDJ untuk suntikan dependensi dalam Java EE termasuk: @Inject: Inject dependencies. @Menghasilkan: Mengisytiharkan kaedah untuk menghasilkan kebergantungan. @Disposes: Mengisytiharkan kaedah untuk dipanggil apabila kebergantungan dilepaskan. @Dependent: Tentukan skop kacang sebagai skop permintaan. @ApplicationScoped: Menentukan bahawa skop kacang adalah skop aplikasi.
Anotasi CDJ untuk Suntikan Ketergantungan dalam Java EE
Dalam Java Enterprise Edition (Java EE), Dependency Injection (DI) ialah teknik yang memudahkan pembangunan aplikasi. Dengan DI, bukannya membuat dan mengurus tanggungan secara manual, anda boleh mengisytiharkan tanggungan melalui anotasi. Anotasi ini akan dihuraikan secara automatik dan disuntik oleh bekas (seperti pelayan GlassFish).
CDI Anotasi
Di Java EE, spesifikasi Context and Dependency Injection (CDI) menyediakan satu set anotasi untuk DI. Anotasi ini termasuk:
@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
: digunakan untuk mengisytiharkan kaedah untuk menjana kebergantungan.
@Disposes
: Digunakan untuk mengisytiharkan kaedah yang akan dipanggil apabila kebergantungan tidak lagi diperlukan. @Dependent
: Digunakan untuk menyatakan bahawa skop kacang ialah skop permintaan. @ApplicationScoped
: Digunakan untuk menyatakan bahawa skop kacang ialah skop aplikasi.
UserService
, yang bergantung pada antara muka UserRepository
. Menggunakan CDI, kami boleh mengisytiharkan kebergantungan dengan cara berikut: 🎜rrreee🎜 Dalam kod di atas, anotasi @Inject
menunjukkan bahawa medan userRepository
harus disuntik secara automatik oleh bekas . 🎜rrreee🎜Dalam contoh ini, anotasi @Produces
digunakan untuk mengisytiharkan bahawa kaedah createUserRepository
bertanggungjawab untuk menghasilkan pelaksanaan UserRepository
, manakala anotasi @PersistenceContext digunakan untuk menyuntik <code>EntityManager
ke dalam kaedah. 🎜🎜🎜Kesimpulan🎜🎜🎜Anotasi CDI menyediakan cara yang mudah dan cekap untuk melaksanakan suntikan pergantungan. Dengan menggunakan anotasi ini, anda boleh mengurangkan kod boilerplate dan menjadikan aplikasi anda lebih modular dan boleh diselenggara. 🎜Atas ialah kandungan terperinci Bagaimanakah anotasi CDI Java EE digunakan untuk suntikan pergantungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!