Интеграция JSF и пружины - PullRequest
1 голос
/ 30 марта 2012

Реализация простого экрана входа в систему с использованием JSF, Spring и Hibernate. Я написал бины уровня обслуживания и данных весной и интегрировал их с Hibernate.

Я определил экран регистрации (создание нового пользователя) с двумя полями идентификатор пользователя, пароль в JSF и связал их с управляемым компонентом. (Имя компонента: Пользователи) Здесь этот компонент также является классом домена.

Теперь по нажатию кнопки создания в представлении JSF мне нужно вызвать методы Service Bean (которые являются весенними bean-компонентами). Для этого я вижу, что у меня есть два способа сделать,

  1. Написать метод в управляемом компоненте Users, который принимает заданного пользователя, пароль и вызывает методы bean-компонента Spring, который в свою очередь вызывает методы компонента DAO для сохранения данных в БД. Но здесь у меня вопрос: насколько хорошо писать метод контроллера в классах домена?

  2. Второй способ - определить новый управляемый компонент, имеющий объект Spring Service в качестве свойства (которое внедряется с помощью интеграции spring + jsf) и метод для вызова методов компонента обслуживания.

Я делаю правильный дизайн? Ничего плохого? Пожалуйста, предложите мне лучший дизайн.

Спасибо

1 Ответ

2 голосов
/ 30 марта 2012

Не делайте свой класс домена как управляемый компонент JSF.

Как правило, я следую за тем, чтобы я инкапсулировал класс домена и другие свойства поддержки пользовательского интерфейса в компоненте формы (когда сценарий сложен, иначе прямая сущность как свойство в управляемом компоненте) и получил его в управляемом компоненте.

Сервис Spring внедряется в управляемый bean-компонент, а в bean-компоненте / компоненте формы действия передается сервису Spring для обработки и сохранения бизнес-сценариев и вариантов использования (dao / repository).

Код шаблона:

@ManagedBean
public class Bean{

  private Entity entity;//or
  private FormBean formBean;

  @Inject private Service service;

  public String doAction(){
    //error processing from service layer and UI message handling
    service.process(entity);//or
    service.process(formBean);
    return Navigation.Constant;
  }
}  

Назначение управляемого компонента должно состоять в том, чтобы собирать данные представления и передавать их службе для обработки. Если вы сделаете свой класс домена / сущности в качестве управляемого компонента, вы будете связывать его с библиотекой JSF, которая не подходит для повторного использования. Согласно принципу разработки SRP (принцип единой ответственности), класс должен нести одну ответственность, в этом случае он будет иметь больше и, следовательно, как уже упоминалось выше, не является хорошей практикой.

Точка 2, как вы упомянули, лучше.

Надеюсь, это поможет !!!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...