Вот довольно понятная версия, использующая синтаксис метода:
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 }));
Если вы хотите, чтобы 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;
}
дают @Lazy аннотацию к компоненту, который вы хотите загрузить после инициализации bean-компонента.
@Bean
@Lazy
public CassandraClusterFactoryBean cluster() {
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
cluster.setContactPoints(contactPoints);
cluster.setPort(port);
return cluster;
}