autowire Haben Sie eine Möglichkeit, Bean in Bedingung zu autowire?Wie Eigenschaften Eigenschaften Bean aus Bedingung
Es gibt ein nächstes Beispiel. Wir haben 2 Implementierung von FileManager. Eine der Implementierungen sollte initialisiert werden, hängt von der Eigenschaft 'Plattform' ab. Eigenschaften Griffe über 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 {
...
}
Dieser Code funktioniert nicht. Der Hauptgrund dafür ist, dass die ArchaiusProperties-Bean nicht initialisiert wird, wenn die Bedingung übereinstimmt. Gibt es eine Möglichkeit, die ArchaiusProperties-Bean zu initialisieren, bevor Sie sie in einem Zustand verwenden?
Danke! Jetzt denke ich eigentlich, dass @Conditional nicht der beste Weg für mich ist. – biven
Das Festlegen des Profils hängt von dem Ergebnis ab, das von der Methode im Bean 'ArchaiusProperties' zurückgegeben wird. Wie ist es möglich? Auch sagt das erwähnte Javadoc nicht, dass Sie tatsächlich innerhalb der 'ConfigurationCondition' auf Beans verweisen können? –