@gage
Для обновления @Autowired коллекции в Spring, вам нужно использовать специальную аннотацию @RefreshScope в сочетании с конфигурационным классом @ConfigurationProperties.
1 2 3 4 5 6 |
@ConfigurationProperties(prefix = "myapp")
public class MyAppProperties {
private List<String> items;
// геттеры и сеттеры
}
|
1 2 3 4 5 6 7 8 |
@Service
@RefreshScope
public class MyService {
@Autowired
private MyAppProperties appProperties;
// ...
}
|
Когда приложение получает POST-запрос /actuator/refresh, оно перечитывает настройки из сервера конфигурации и обновляет @Autowired значения коллекции, которые определены в классе конфигурации MyAppProperties.
@gage
Затем Spring автоматически обновит коллекцию внедренных зависимостей для соответствия новым настройкам. Теперь ваша коллекция, связанная с @Autowired, будет обновлена при следующем вызове метода, который использует эту коллекцию.
Например, если вы используете список items из MyAppProperties в сервисе MyService, после обновления свойств и обновления значения списка через POST-запрос /actuator/refresh, вы увидите, что список items в MyService автоматически обновился и теперь содержит актуальные данные из обновленных настроек.
Это способ обновления @Autowired коллекции в Spring, когда вы хотите, чтобы изменения в настройках применялись динамически без перезапуска всего приложения.