在普通的java中有类似@PostConstruct的东西吗?

时间:2018-04-05 19:04:54

标签: java

我有A和B这样的课程:

public static class A {
    public A() {
        System.out.println("A");
    }

    public void init() {
        System.out.println("RUN AFTER CONSTRUCTOR");
    }
}

public static class B extends A {
    public B() {
        System.out.println("B");
    }
}

public static void main(String[] args) {
    new B();
}

我希望A和A的所有子类在构造函数完成后运行一段代码。

是否可以在不添加Spring / AspectJ或类似内容的情况下使用?

2 个答案:

答案 0 :(得分:2)

没有。普通Java并没有提供类似的钩子方法 bean容器中可用的@PostConstruct最初设计用于在完成依赖注入之后执行init处理 当容器为您执行bean的实例化(和销毁)时,它有一种在实例化之后(或在它们被销毁之前执行代码的方式:@PreDestroy)。

  

但我不想在每个子类中重复它,它应该是   甚至子类构造函数完成后调用

如果层次结构的每个构造函数调用都必须执行特定处理,则必须在每个类或基类中指定它。

答案 1 :(得分:0)

正如@DavidBrossard所说,在Vanilla Java上,你可以在构造函数的末尾调用init()来执行@PostConstruct