Как запустить компоненты базы данных после настройки свойств?

Вот довольно понятная версия, использующая синтаксис метода:

IEnumerable<JoinPair> outerLeft =
    lefts.SelectMany(l => 
        rights.Where(r => l.Key == r.Key)
              .DefaultIfEmpty(new Item())
              .Select(r => new JoinPair { LeftId = l.Id, RightId = r.Id }));
0
задан V. Perfilev 13 July 2018 в 12:56
поделиться

2 ответа

Если вы хотите, чтобы Spring создала этот компонент после загрузки настроек, подумайте о зависимостях Spring, таких как:

CassandraClusterFactoryBean requires/depends on CassandraConfig 

И Spring позаботится о создании компонентов в требуемом порядке ,

Вы можете определить кластерный компонент, например:

@Bean
public CassandraClusterFactoryBean cluster(CassandraConfig config) {
    CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();    
    cluster.setContactPoints(config.getContactPoint());
    cluster.setPort(config.getPort());
    return cluster;
}
0
ответ дан davidxxx 17 August 2018 в 12:48
поделиться
  • 1
    К сожалению, это не моя ситуация. Приложение получает настройки с помощью TCP-клиента с сервера после загрузки всех компонентов. Кроме того, мне нужно перезагрузить после обновления настроек. – V. Perfilev 13 July 2018 в 13:39

дают @Lazy аннотацию к компоненту, который вы хотите загрузить после инициализации bean-компонента.

@Bean
@Lazy
public CassandraClusterFactoryBean cluster() {
    CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
    cluster.setContactPoints(contactPoints);
    cluster.setPort(port);
    return cluster;
}
0
ответ дан Vishal Monga 17 August 2018 в 12:48
поделиться
  • 1
    Спасибо! Но это не помогает. Я думаю, это из-за autowiring. Я попытаюсь добавить Lazy-аннотацию к конструктору с Autowired. – V. Perfilev 13 July 2018 в 13:35
Другие вопросы по тегам:

Похожие вопросы: