Я беру JSF 2.0 и сомневаюсь в новом автоматическом подключении на основе аннотаций (объявление управляемых bean-компонентов без кода в faces-config.xml).
Насколько я понимаю, аннотации великолепны и просты, но проблема может привести к определенной необходимости замены одного bean-компонента другим в большой системе, что, если бы были использованы аннотации, привело бы к необходимости удаления определенных классов (или подобного грязного взлома). ), а это легко исправить в faces-cofig.xml.
Пожалуйста, поделитесь своим опытом по этому поводу. Что считать удобнее и почему?
2 ответа
Как было сказано в Core JavaServer Faces (третье издание):
До JSF 2.0 все bean-компоненты нужно было настраивать с помощью XML. В настоящее время у вас есть выбор между аннотациями и конфигурацией XML. Конфигурация XML довольно многословна, но она может быть полезна, если вы хотите настроить bean-компоненты во время развертывания.
Аннотации позволяют быстро разрабатывать и сокращать избыточное кодирование XML. Как правило, это очень сильно зависит от самого проекта.
но проблема может заключаться в необходимости замены одного компонента другим в большой системе
Этого просто нельзя делать. Компонент, управляемый JSF, должен быть специфичным для представлений JSF и не должен повторно использоваться другими уровнями / API. Если вы хотите совместно использовать некоторые данные между JSF и другими уровнями / API, которые не знают о JSF, вам лучше поместить эти данные в отдельный класс и сделать их свойством управляемого bean-компонента 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. Это также известно как архитектурный паттерн «объект передачи данных».
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
javax.faces.bean.*
устарели, начиная с JSF 2.3. См. Также stackoverflow.com/q/4347374