Я нахожусь в процессе перехода от управляемых компонентов JSF к управляемым компонентам CDI, и я только что подтвердил, что могу успешно использовать super в компоненте-потомке CDI (с «настраиваемым» квалификатором @Descendant), который «расширяет» bean-компонент CDI-предка (с квалификатором @Default).
Предок CDI-бина с квалификатором @Default:
@Default
@Named("pf_pointOfContactController")
@SessionScoped
public class pf_PointOfContactController implements Serializable {
Бин-предок имеет следующее:
@PostConstruct
protected void init() {
Компонент bean-компонента CDI с квалификатором @Descendant:
@Descendant
@Named("pf_orderCustomerPointOfContactController")
@SessionScoped
public class pf_OrderCustomerPointOfContactController extends pf_PointOfContactController {
Компонент-компонент Bean имеет следующее:
@PostConstruct
public void init(){
super.init();
Мне пришлось добавить / использовать super.init (), потому что методыв bean-компоненте CDI предка возникало исключение NullPointerException, поскольку @PostConstruct бина-предка не выполняется в компоненте CDI @Descendant.
Я видел / слышал / читал, что рекомендуется использовать @PostConstruct вместо метода Constructor, когдаиспользуя CDI, конструктор bean-компонента-предка имел логику инициализации, а конструктор bean-компонента-предка автоматически вызывался / выполнялся при использовании управляемых JSF-компонентов.