Я использую Context Dependency Injection CDI 1.1 рамки из JavaEE 7, на сервере приложений WildFly 8,2Инициализировать подклассы после @PostConstruct
Я хочу, чтобы инициализировать подклассы после @PostConstruct
из суперкласса
So я Somthing как этот
// case 1: it's working but it's not simple to understand
public class A {
@PostConstruct
protected void init() {
System.out.println("A");
afterInit();
}
protected void afterInit() {}
}
public class B extends A {
@Override
protected void afterInit() {
System.out.println("B");
}
}
public class C extends B {
@Override
protected void afterInit() {
super.afterInit();
System.out.println("C");
}
}
Так метод init()
напечатает A, B, C в указанном порядке
Было бы хорошо иметь @AfterPostconstruct
аннотацию, которая будет делать то же самое, но я не найти
// case 2: dream code
public class A {
@PostConstruct
protected void init() {
System.out.println("A");
}
}
public class B extends A {
@AfterPostConstruct // pseudocode
protected void afterInitB() {
System.out.println("B");
}
}
public class C extends B {
@AfterPostConstruct // pseudocode
protected void afterInitC() {
System.out.println("C");
}
}
Я стараюсь, переопределяя init()
но он не работает (init()
не называется контейнером)
// case 3 : code that is not working but it would be better than case 1
public class A {
@PostConstruct
protected void init() {
System.out.println("A");
}
}
public class B extends A {
@Override
protected void init() {
super.init();
System.out.println("B");
}
}
public class C extends B {
@Override
protected void init() {
super.init();
System.out.println("C");
}
}
Есть ли лучший (более простой) способ инициализации подклассов после @PostConstruct
?