Как обновить autowired коллекцию Spring

155
22 февраля 2018, 13:59

Имеется коллекция объектов

@Autowired
private List<SomeInterface> objects;

В рантайме создаю новую реализацию интерфейса SomeInterface, Как сделать , чтобы спринг обновил эту коллекцию?

Answer 1

Можете сделать так:

@Autowired
private ApplicationContext context;
public Collection<SomeInterface> getList(){
   return context.getBeansOfType(SomeInterface.class);
} 

Но, чтобы это правильно работало, необходимо вашу новую реализацию зарегистрировать в контексте spring'a .

Например так:

((DefaultListableBeanFactory)context
                  .getAutowiredCapableBeanFactory())
                  .registerSingleton(new SomeInterfaceImpl());
READ ALSO
Как сохранить фрагменты в памяти?

Как сохранить фрагменты в памяти?

Я использую MVP + Moxy+ BottomNavigation

136
Различие методов getActiveCount() и getTaskCount() ThreadPoolExecutor

Различие методов getActiveCount() и getTaskCount() ThreadPoolExecutor

В чём заключается различие методов getActiveCount() и getTaskCount() класса ThreadPoolExecutor? Правильно, я понимаю, что getActiveCount() - это приблизительное количество...

160
Оптимальная сборка строки

Оптимальная сборка строки

Как эффективней/целесообразней в Java собирать строку из частей? Через Stringformat()

140
Android Studio, Error:A problem occurred configuring project &#39;:app&#39;. &gt; Failed to find Build Tools revision 26.0.2

Android Studio, Error:A problem occurred configuring project ':app'. > Failed to find Build Tools revision 26.0.2

Скачал Android Studio, пытаюсь сбилдить пример по умолчанию, получаю ошибку:

202