@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, когда вы хотите, чтобы изменения в настройках применялись динамически без перезапуска всего приложения.