结论先行:构造函数 ->@Autowired -> PostConstruct 依次执行
由于项目需要启动时加载一个配置信息,所以想到了用@PostConstruct,如下所示:
@Configuration public class BUserCenterConfig {@Value("${b.user.url}")public String userCenterUrl;@Value("${b.user.appId}")public String userCenterAppId;@PostConstructpublic void setDefaultConfig() {UserCenterConfig.SetInterfaceUrl(userCenterUrl);UserCenterConfig.SetDefaultAppId(userCenterAppId);} }
BeanTest.java
@Service public class BeanTest {@Autowiredprivate BeanTest2 beanTest2;public BeanTest() {System.out.println("this is BeanTest construct. ");}@PostConstructprivate void init() {System.out.println("this is BeanTest init function. ");beanTest2.test2();} }
BeanTest2.java
@Service public class BeanTest2 {@PostConstructprivate void init() {System.out.println("this is BeanTest2 init function. ");}public BeanTest2() {System.out.println("this is BeanTest2 construct. ");}void test2() {System.out.println("this is BeanTest2 test2 function. ");} }
启动项目,输出结果如下:
this is BeanTest construct. this is BeanTest2 construct. this is BeanTest2 init function. this is BeanTest init function. this is BeanTest2 test2 function.