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