簡體   English   中英

faces-config.xml中的注釋與托管bean聲明

[英]Annotations vs managed beans declarations in faces-config.xml

我正在研究JSF 2.0並且對基於新注釋的自動布線有一定的疑問(在faces-config.xml中沒有任何代碼的托管bean的聲明)。

就我而言,注釋是偉大而簡單的,但問題可能是需要在一個大系統中用一個bean替換另一個bean,如果使用注釋,將導致需要刪除某些類(或類似的臟黑客) ),雖然它可以很容易地修復faces-cofig.xml。

請分享您對此事的經驗。 什么應該被認為更方便,為什么?

但問題可能是需要在一個大系統中用一個bean替換另一個bean

這根本就不應該做。 JSF托管bean應該特定於JSF視圖,不能被其他層/ API重用。 如果你想在JSF和其他不了解JSF的層/ API之間共享一些數據,那么你應該把它們放在自己的類中,並使它成為JSF托管bean的屬性。

所以,而不是

@ManagedBean
@SessionScoped
public class User {
    private Long id;
    private String username;
    private String password;
    // ...
}

你應該寧願擁有

@ManagedBean
@SessionScoped
public class UserManager {
    private User user;
    // ...
}

public class User {
    private Long id;
    private String username;
    private String password;
    // ...
}

這樣,您可以在所有圖層之間共享User ,而無需擔心特定於圖層的API。 這也稱為“數據傳輸對象”架構模式。

正如Core JavaServer Faces(第三版)中所述

在JSF 2.0之前,必須使用XML配置所有bean。 如今,您可以在注釋和XML配置之間進行選擇。 XML配置相當冗長,但如果要在部署時配置Bean,則它非常有用。

注釋允許快速開發並減少冗余xml編碼。 一般來說,它在很大程度上取決於項目本身。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM