构造方法和代码块的执行顺序
-
代码块优先于构造方法执行,所以有时候也叫构造代码块,使用代码块可以执行一些,构造方法之前执行的逻辑
-
在Spring 中可以通过注解@PostConstructor指定构造方法执行之后的逻辑,@PostConstructor是Bean 的生命周期方法,在Bean创建之后执行,我们可以利用这个机制完成Bean创建之后需要加载的对象,或者资源
简单示例
(1)一个简单的java 类
public class Person {
private String name;
private Integer age;
{
System.out.println("构造代码块执行了");
}
public Person() {
System.out.println("无参构造执行了");
}
public Person(String name, Integer age) {
this.name = name;
this.age = age;
System.out.println("全参构造执行了");
}
}
(2)通过创建对象,观察输出结果
public class CodeBlock {
public static void main(String[] args) {
new Person();
System.out.println("========================");
new Person("韩一",22);
}
}
(3)输出结果可以看到, 代码块优先于构造方法, 这里还通过变换构造方法和代码块的位置尝试,输出的结果时一样的
构造代码块执行了
无参构造执行了
========================
构造代码块执行了
全参构造执行了