Qualcuno ha il modo di autorizzare il bean in Condition?Come valorizzare il bean delle proprietà da Condizione
C'è un prossimo esempio. Abbiamo 2 implementazione di FileManager. Una delle implementazioni dovrebbe essere inizializzata in base alla "piattaforma" di proprietà. Proprietà gestisce tramite 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 {
...
}
Questo codice non funziona. Il motivo principale è perché il bean ArchaiusProperties non viene inizializzato quando le condizioni corrispondono. Ha un modo per inizializzare il bean ArchaiusProperties prima di usarlo in condizioni?
Grazie! Ora penso che @Conditional non sia il modo migliore per me. – biven
L'impostazione del profilo dipenderà dal risultato restituito dal metodo nel bean 'ArchaiusProperties'. Come è possibile? Inoltre, il Javadoc citato non dice che in realtà puoi fare riferimento ai bean all'interno di 'ConfigurationCondition'? –