1、为了验证这个问题,编写如下代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ClassA {
@Autowired
private ClassB b;
static {
System.out.println("这是ClassA 的 static块");
}
public ClassA (){
System.out.println("这是ClassA 的构造方法");
}
@PostConstruct
public void init(){
System.out.println("这是ClassA 的 init 方法");
}
}
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ClassB {
static {
System.out.println("这是ClassB 的 static块");
}
public ClassB (){
System.out.println("这是ClassB 的构造方法");
}
@PostConstruct
private void init() {
System.out.println("这是ClassB 的init 方法");
}
}
2、启动项目,控制台输出如下:
这是ClassA 的 static块
这是ClassA 的构造方法
这是ClassB 的 static块
这是ClassB 的构造方法
这是ClassB 的init 方法
这是ClassA 的 init 方法
3、结论
ClassA的static块 > ClassA的构造方法 > ClassB的static块 > ClassB的构造方法 > ClassB的@PostConstruct方法 > ClassA 的 @PostConstruct 方法