Enterprise Orta

JSF Managed Bean ile CDI Named Bean Karşılaştırması

Birleşik bir bağımlılık enjeksiyonu modeli için kullanımdan kaldırılmış JSF @ManagedBean'i CDI @Named ile değiştirin.

✕ Java EE
@ManagedBean
@SessionScoped
public class UserBean implements Serializable {
    @ManagedProperty("#{userService}")
    private UserService userService;

    private String name;

    public String getName() { return name; }
    public void setName(String name) {
        this.name = name;
    }

    public void setUserService(UserService svc) {
        this.userService = svc;
    }
}
✓ Jakarta EE 10+
@Named
@SessionScoped
public class UserBean implements Serializable {
    @Inject
    private UserService userService;

    private String name;

    public String getName() { return name; }
    public void setName(String name) {
        this.name = name;
    }
}
Bu kodda bir sorun mu gördünüz? Bize bildirin.
🔗

Birleşik model

Tek bir CDI kapsayıcısı tüm bean'leri yönetir — JSF, REST ve hizmet katmanları aynı enjeksiyonu paylaşır.

🗑️

Daha az şablon kod

@Inject, @ManagedProperty ve gerekli setter yönteminin yerini alır.

🔮

Geleceğe hazır

@ManagedBean, Jakarta EE 10'da kaldırılmıştır; @Named desteklenen yerini alandır.

Eski Yaklaşım
@ManagedBean
Modern Yaklaşım
@Named + CDI
JDK'dan itibaren
11
Zorluk
Orta
JSF Managed Bean ile CDI Named Bean Karşılaştırması
Mevcut

CDI @Named Java EE 6'dan itibaren kullanılabilir; @ManagedBean Jakarta EE 10'da kaldırılmıştır

JSF'in @ManagedBean ve @ManagedProperty'si, Jakarta Faces 2.3'te kullanımdan kaldırıldı ve Jakarta EE 10'da kaldırıldı. CDI tabanlı değişiklik, bean'i EL ifadelerine açmak için @Named ve bağımlılık bağlama için @Inject kullanır. Bu, bean modelini birleştirir: JSF sayfaları, JAX-RS kaynakları ve EJB'ler aynı CDI kapsayıcısını paylaşır.

Paylaş 𝕏 🦋 in