结论先行:构造函数 -> PostConstruct -> @Autowired 依次执行

由于项目需要启动时加载一个配置信息,所以想到了用@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. 

 

相关文章:

  • 2021-10-13
  • 2022-12-23
  • 2022-12-23
  • 2021-08-31
  • 2022-03-06
  • 2021-09-20
  • 2021-08-15
猜你喜欢
  • 2022-12-23
  • 2021-11-03
  • 2021-06-08
  • 2021-08-29
  • 2022-12-23
相关资源
相似解决方案