Это не стандартный способ обработки языкового стандарта пользователя. Я рекомендую хранить эту информацию в базе данных у самого пользователя, если характеристика c изменчива и варьируется у разных пользователей.
Однако один из лучших способов обновления бина во время выполнения - использование * 1003. *DefaultSingletonBeanRegistry
, который все еще поддерживается в текущей версии Spring (5.2.x, насколько я знаю). На самом деле вы должны удалить компонент и зарегистрировать его снова с новым значением.
Начните с ConfigurableApplicationContext
, который поможет вам получить DefaultSingletonBeanRegistry
.
@Autowired
ConfigurableApplicationContext context;
И код удаления и регистрации бина должен выглядеть следующим образом:
LocaleResolver localeResolver = ... // a new bean to be registered, up to you :)
DefaultSingletonBeanRegistry registry = (DefaultSingletonBeanRegistry) context.getBeanFactory();
registry.destroySingleton("localeResolver");
registry.registerSingleton("localeResolver", localeResolver);
Я никогда не использовал его на самом деле, но я нашел несколько примеров, которые могут быть полезны: Programcreek .
Важно: Я беспокоюсь, что этот способ не обновит / refre sh уже зарегистрированных старых введенных бобов. Я надеюсь, что кто-то может подтвердить / оспорить это утверждение.