Условный компонент на экземпляреJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Условный компонент на экземпляре

Сообщение Anonymous »

Я хочу сделать инициализацию моего bean-компонента условной.
Условием, на которое он должен реагировать, является тип экземпляра bean-компонента, загруженного в контекст ранее.
У меня есть: р>

Код: Выделить всё

@Transactional
@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
public class InitializationConfig {

@Bean
public DbState getDbState(CallerInfoTypeRepository callerInfoTypeRepository) {
return callerInfoTypeRepository.findAll().isEmpty() ?
new EmptyDb() : new InitializedDb();
}
}

а затем:

Код: Выделить всё

@Component
@ConditionalOnBean(EmptyDb.class)
public class Initializer {

@Bean
public List initializeCallerTypes(CallerInfoTypeRepository callerInfoTypeRepository) {
List callerInfoTypeEntities = Instancio.ofList(CallerInfoTypeEntity.class).size(4)
.create();

for (CallerInfoTypeEntity infoType : callerInfoTypeEntities) {
infoType.setId(null);
infoType.getSubscriberInfo().setId(null);
infoType.getSubscriberInfo().getMapCoordinate().setId(null);

PersonalAddressEntity userInfo = infoType.getUserInfo();
userInfo.setId(null);
}

List collect = callerInfoTypeRepository.saveAllAndFlush(callerInfoTypeEntities).stream()
.map(CallerInfoTypeEntity::getId)
.collect(Collectors.toList());

List all = callerInfoTypeRepository.findAll();

return collect;
}
}

DbState, очевидно, представляет собой интерфейс, реализованный EmptyDb и InitializedDb.
Так и должно быть быть просто простым рычагом магии IoC и Spring, поэтому мне не нужно прикасаться к отвращению как к нулю. Я уверен, что Spring справится с этим, но мне не хватает.
Можете ли вы дать совет?
РЕДАКТИРОВАТЬ: Инициализатор находится в стадии разработки. выполняется, даже если getDbState возвращает InitializedDb в мощный контекст
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/783 ... nstance-of
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»