Java SpringBoot-仅当使用@ConditionalOnProperty定义某个属性时才运行@Configuration

Java SpringBoot-仅当使用@ConditionalOnProperty定义某个属性时才运行@Configuration,java,spring-boot,configuration,annotations,Java,Spring Boot,Configuration,Annotations,只有在application.yml中定义了某个属性时,我才需要运行某个配置。 我发现@Conditional注释似乎可以完成这项工作。我只需要在.env中为应用程序提供颁发者uri时创建配置 * Configuration for OAuth 2.0 token validation */ @EnableWebSecurity @Configuration @ConditionalOnProperty(name = "spring.security.oauth2.resource

只有在application.yml中定义了某个属性时,我才需要运行某个配置。 我发现@Conditional注释似乎可以完成这项工作。我只需要在.env中为应用程序提供颁发者uri时创建配置

 * Configuration for OAuth 2.0 token validation
 */
@EnableWebSecurity
@Configuration
@ConditionalOnProperty(name = "spring.security.oauth2.resourceserver.jwt.issuer-uri")
@Order(2)
public class ApiSecurityConfiguration extends WebSecurityConfigurerAdapter {

    /*
     * Issuer URI
     */
    @Value("${spring.security.oauth2.resourceserver.jwt.issuer-uri}")
    private String issuerUri;
我得到的问题是,当未提供颁发者uri时,@值似乎在@Conditional之前计算,因此我得到:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ISSUER_URI' in value "${ISSUER_URI}"

提前感谢。

如果属性不可用,您可以添加matchIfMissing=false跳过配置


@conditionalnproperty(name=“spring.security.oauth2.resourceserver.jwt.issuer uri”,matchifmission=false)
谢谢!似乎是工作的本意。