首先测试下在启动类中编写三部分代码
@EnableFeignClients
@EnableAsync
@SpringBootApplication(
exclude = {DataSourceAutoConfiguration.class},
scanBasePackages = {"test"}
)
public class AppMallApplication {
static{
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
@PostConstruct
void init(){
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
public static void main(String[] args) {
SpringApplication.run(AppMallApplication.class, args);
}
}
设置以下三个断点
Debug启动,同时观察控制台信息
先执行到static代码块
控制台无输出
第二个断点来到了启动类
控制台无输出
spring组件开始加载
然后来到了@PostConstruct
最后项目成功启动
打印端口号
结论
当class被加载之后,会执行static中的代码。
然后执行启动类
当你的component组件的依赖初始化之后,执行@PostConstruct内的代码。