Я хочу заново создать (новый объект) конкретный bean в Runtime (без перезапуска сервера) при некоторых изменениях БД. Вот как это выглядит -
@Component
public class TestClass {
@Autowired
private MyShop myShop; //to be refreshed at runtime bean
@PostConstruct //DB listeners
public void initializeListener() throws Exception {
//...
// code to get listeners config
//...
myShop.setListenersConfig(listenersConfig);
myShop.initialize();
}
public void restartListeners() {
myShop.shutdownListeners();
initializeListener();
}
}
Этот код не работает как myShop
объект создается Spring как Singleton, и его контекст не обновляется, если сервер не перезапускается. Как обновить (создать новый объект) myShop
?
Одним из плохих способов я могу создать новый myShop
объект внутри restartListeners()
, но это не кажется мне правильным.