My ExampleBean
нужна информация из UsefulBean1
только во время создания. Поэтому я могу отказаться от экземпляра UsefulBean1
после получения необходимой информации.
@ManagedBean
public class ExampleBean {
private int value;
@Inject
public void setUseful(UsefulBean usefulBean){
this.value = usefulBean.getValue();
//bye, bye usefulBean. see ya.
}
}
Но как насчет моего ExampleBean2
, которому во время создания требуется объединенная информация из UsefulBean1
и UsefulBean2
?
Я знаю, что могу получить их @Injected
и объединить информацию по @PostConstruct
методу:
@ManagedBean
public class ExampleBean2 {
private int value;
@Inject
private UsefulBean1 usefulBean1;
@Inject
private UsefulBean2 usefulBean2;
@PostConstruct
public void init(){
this.value = this.usefulBean1.getValue() + this.usefulBean2.getValue();
//from this point on, the usefulBeans fields are useless...
this.usefulBean1 = null;
this.usefulBean2 = null;
}
}
Но меня немного раздражает, что я оставляю эти два ненужных поля (this.usefulBean1
и this.usefulBean2
).
Я пробовал многопараметрический метод набора, но безрезультатно.
Это, безусловно, ничего не нарушает или тратить ресурсы. Но код, IMHO, был бы более понятным без полей, работающих как временные одноразовые переменные.
Есть ли возможность инициализировать bean-компонент CDI данными из нескольких других bean-компонентов без необходимости задавать их как поля?