Аннотации против объявлений управляемых бинов в face-config.xml - PullRequest
4 голосов
/ 21 февраля 2011

Я попал в руки JSF 2.0 и у меня возникли определенные сомнения по поводу новой автоматической разметки на основе аннотаций (объявление управляемых bean-компонентов без какого-либо кода вface-config.xml).

Насколько я могу заметить, аннотации велики и просты, но проблема может заключаться в определенной необходимости замены одного компонента другим в большой системе, что, если используются аннотации, приведет к необходимости удаления определенных классов (или похожий грязный хак), хотя это можно легко исправить в face-cofig.xml.

Пожалуйста, поделитесь своим опытом по этому вопросу. Что следует считать более удобным и почему?

Ответы [ 2 ]

3 голосов
/ 21 февраля 2011

, но может возникнуть проблема с заменой одного компонента другим в большой системе

Этого просто не следует делать.Управляемый компонент JSF должен быть специфичным для представлений JSF и не должен использоваться другими уровнями / API.Если вы хотите поделиться некоторыми данными между JSF и другими уровнями / API, которые не знают о JSF, вам лучше поместить эти данные в свой собственный класс и сделать его свойством управляемого компонента JSF.

Итак, вместо

@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.Это также называется архитектурным шаблоном «Объект передачи данных».

2 голосов
/ 23 февраля 2011

Как было сказано в Core JavaServer Faces (третье издание) :

До JSF 2.0 все компоненты должны были быть настроены с XML. В настоящее время у вас есть выбор между аннотациями и конфигурацией XML. Конфигурация XML довольно Подробно, но может быть полезно, если вы хотите настроить bean-компоненты во время развертывания.

Аннотации обеспечивают быструю разработку и сокращают избыточное XML-кодирование. Как правило, это сильно зависит от самого проекта.

...