Czy ktoś ma możliwość automatyzacji fasoli w warunku?Jak zautomatyzować fasolę właściwości z warunku
Istnieje kolejny przykład. Mamy 2 implementacje FileManager. Jedna z implementacji powinna zostać zainicjowana w zależności od platformy właściwości. Właściwości obsługuje Archaius.
@Component
public class AwsPlatformCondition implements Condition {
@Autowired
private ArchaiusProperties archaiusProperties;
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
return "aws".equalsIgnoreCase(archaiusProperties.getStringProperty(PropertiesMapper.PLATFORM));
}
}
.
@Component
public class StandardPlatformCondition implements Condition {
@Autowired
private ArchaiusProperties archaiusProperties;
@Override
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
return "standard".equalsIgnoreCase(archaiusProperties.getStringProperty(PropertiesMapper.PLATFORM));
}
}
.
@Component
@Conditional(AwsPlatformCondition.class)
public class AS3FileManager implements FileManager {
...
}
.
@Component
@Conditional(StandardPlatformCondition.class)
public class NativeFileManager implements FileManager {
...
}
Ten kod nie działa. Głównym powodem jest to, że komponent bean ArchaiusProperties nie został zainicjowany po spełnieniu warunku. Czy ktokolwiek może zainicjować komponent bean ArchaiusProperties przed użyciem go w stanie?
Dzięki! Teraz uważam, że @Conditional nie jest dla mnie najlepszym sposobem. – biven
Ustawienie profilu zależy od wyniku zwróconego przez metodę w komponencie bean "ArchaiusProperties". Jak to jest możliwe? Ponadto, czy cytowany Javadoc nie mówi, że rzeczywiście można odnosić się do fasoli w 'ConfigurationCondition'? –