Mad*_*ave 8 java spring spring-boot
在我的Spring启动应用程序中,我们利用@RefreshScope配置更改后动态重新加载bean.它的工作原理,但结合时,我遇到了一个问题,@RefreshScope在与豆注释的方法@PostConstruct和@PreDestroy.似乎@PostConstruct刷新后没有调用.
启动应用程序时,@PostConstruct会正常调用该方法.在调用refresh时,该@PreDestroy方法也会被正常调用,我希望@PostConstruct在新的代理bean实例上调用它,但事实并非如此.这些方法中存在重要的init/destroy-logic,因此不要调用它们是一个问题.
任何人遇到同样的问题,这是一个错误或"功能"?有没有办法让这项工作?
最好的祝福
我今天遇到了同样的问题,并且能够通过@RefreshScope在刷新后调用'd bean上的方法来解决它。为了实现这一点,我为RefreshScopeRefreshedEvent受影响的 bean添加了一个事件处理程序:
@EventListener
public void onRefreshScopeRefreshed(final RefreshScopeRefreshedEvent event) {
getClass();
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这是一个非常无意义的实现,但是这个对 bean 的方法调用会触发它的初始化(@PostConstruct方法)。
此行为符合文档:
刷新作用域 bean 是在使用时(即调用方法时)初始化的惰性代理,
但我仍然认为这确实是一个错误,@PostConstruct应该在刷新后自动调用。
| 归档时间: |
|
| 查看次数: |
2117 次 |
| 最近记录: |