Не могу загрузить свойство в java match- - PullRequest
0 голосов
/ 09 октября 2018

Попытка осуществить условную загрузку бобов весной.Это код, проблема в том, что я не могу загрузить свойство в методе сопоставления,

@Configuration
public class Class implements Condition {

    @Value("${test.property}")
    private boolean testProperty;

    @Override
    public boolean matches(ConditionContext conditionContext, 
                           AnnotatedTypeMetadata annotatedTypeMetadata) {
        sout(testProperty);
        return true;
    }

}

Однако я могу распечатать свойство, если я вставлю его в конструктор, но это не решает мою проблемуесть мысли?

1 Ответ

0 голосов
/ 09 октября 2018

Для условного создания экземпляров на основе переменных среды вы можете использовать аннотацию @ConditionalOnProperty поверх ваших определений bean-компонентов.

@Configuration
public class Config {

    @Bean
    @ConditionalOnProperty(name = "your.property", havingValue = "true")
    public YourBean instantiateIfTrue() {
        // instantiate and return YourBean in case the property is true
    }

    @Bean
    @ConditionalOnProperty(name = "your.property", havingValue = "false")
    public YourBean instantiateIfFalse() {
        // instantiate and return YourBean in case the property is false
    }

}

В вашем случае вы можете добавить @ConditionalOnProperty поверх вашего @Configuration (и больше не расширяется Condition).

@Configuration
@ConditionalOnProperty(name = "your.property", havingValue = "true")
public class Config {

    // ...

}

Полагайтесь на расширение Condition только в том случае, если @ConditionalOnProperty недостаточно гибок для вашего варианта использования.

...