在什么情况下@Bean在@PostConstruct之前执行?

时间:2019-06-04 03:02:23

标签: spring

我遇到了一个迫切的问题,在同一个类中,在@PostConstruct方法之前先执行anotain @Bean方法,

在春季引导oauth2中。有一个名为

的类
AuthorizationServerEndpointsConfiguration.java

其中有2种方法。

@PostConstruct
public void init() {
   xxxx
 }
}
@Bean
public AuthorizationServerTokenServices defaultAuthorizationServerTokenServices() {
   return endpoints.getDefaultAuthorizationServerTokenServices();
}

根据我的理解,init shuold在defaultAuthorizationServerTokenServices方法之前运行,但是当我在IDEA中对其进行调试时,defaultAuthorizationServerTokenServices在init之前运行。

如下所示,配置可以重现此问题。

@Configuration
@Import({ ClientDetailsServiceConfiguration.class, AuthorizationServerEndpointsConfiguration.class })
class  MyAuthorizationServerConfigurer extends AuthorizationServerConfigurerAdapter {
.....
}

你能告诉我原因吗?

谢谢

1 个答案:

答案 0 :(得分:1)

使用@RefreshScope调试配置程序时,我们遇到了此问题。

当我们放弃RefreshScope延迟加载时,似乎可以解决问题

// @RefreshScope
public class MyAuthorizationServerConfigurer extends AuthorizationServerConfigurerAdapter {
}