Не делайте свой класс домена как управляемый компонент 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, как вы упомянули, лучше.
Надеюсь, это поможет !!!!