java – 使用@RefreshScope @PostConstruct @PreDestroy进行Spr
在我的Spring启动应用程序中,我们利用@RefreshScope在配置更改后动态重新加载bean.它可以工作,但是在将bean上的@RefreshScope与注释为@PostConstruct和@PreDestroy的方法结合使用时遇到了一个问题.似乎刷新后没有调用@PostConstruct. 启动应用程序时,会正常调用@PostConstruct方法.在调用refresh时,也会正常调用@PreDestroy方法,我希望在新的代理bean实例上调用@PostConstruct,但事实并非如此.这些方法中存在重要的init / destroy-logic,因此不要调用它们是一个问题. 任何人遇到同样的问题,这是一个错误或“功能”?有没有办法让这项工作? 最好的祝福 最佳答案
我今天遇到了同样的问题,并且能够通过在刷新后调用@ RefreshScope’d bean上的方法来解决它.为此,我将RefreshScopeRefreshedEvent的事件处理程序添加到受影响的bean:
正如您所看到的,它是一个非常无意义的实现,但是这个bean上的方法调用会触发它的初始化(@PostConstruct方法). 此行为符合documentation:
但我仍然认为它确实是一个错误,并且应该在刷新后自动调用@PostConstruct. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |