@PostConstruct是很牛逼的一个注解, 他在spring加载完ioc也就是所有的bean以后会执行.不过这东西也有几个坑需要注意下.
一. 无序
class server { @PostConstruct public void test(){ log.info("sever"); }
}
class client{
@PostConstruct public void test(){ log.info("client"); }
}
最后执行时候究竟先打印server还是client你得看命.
二.如何让@PostConstruct有序.
在client里面Autowrite server是个不错的办法. @order是没用的 @Order 只能够控制bean的顺序而不是PostConstruct.
或者直接在spring的application里面直接通过bean调用.建议这个
三.单线程
这玩意是单线程的
class server { @PostConstruct public void test(){ log.info("sever"); Thread.sleep(); }
}
其他没执行的PostConstruct就彻底废了.最好的办法还是通过spring的application启动.
具体可以参照https://blog.csdn.net/qq_17165047/article/details/101033367