当前位置: 代码迷 >> 综合 >> @PostConstruct、@Autowired以及构造函数的执行顺序
  详细解决方案

@PostConstruct、@Autowired以及构造函数的执行顺序

热度:65   发布时间:2023-09-20 00:14:53.0

结论先行:构造函数 ->@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. 
  相关解决方案