Không có cách nào để autowire đậu trong điều kiện?Làm thế nào để autowire tài sản đậu từ Điều kiện
Có một ví dụ tiếp theo. Chúng tôi có 2 triển khai FileManager. Một trong những thực hiện nên được khởi tạo trong phụ thuộc vào 'nền tảng' thuộc tính. Thuộc tính xử lý thông qua 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 {
...
}
Mã này không hoạt động. Lý do chính là vì hạt ArchaiusProperties không được khởi tạo khi điều kiện phù hợp. Có cách nào để khởi tạo bean ArchaiusProperties trước khi sử dụng nó trong điều kiện không?
Cảm ơn! Bây giờ tôi thực sự nghĩ rằng @Conditional không phải là cách tốt nhất cho tôi. – biven
Đặt cấu hình sẽ phụ thuộc vào kết quả được trả về từ phương thức trong bean 'ArchaiusProperties'. Làm thế nào là nó có thể? Ngoài ra, không Javadoc trích dẫn nói rằng bạn thực sự có thể tham khảo các bean bên trong 'ConfigurationCondition'? –