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

SpringBoot - Run a @Configuration only if a certain property is defined using @ConditionalOnProperty

只有当我的 application.yml 中定义了某个 属性 时,我才需要 运行 某个配置。 我发现 @Conditional 注释似乎可以完成这项工作。只有在 .env.

中为应用程序提供了 issuer-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 时,@Value 似乎在@Conditional 之前被评估,所以我得到:

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

提前致谢。

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

@ConditionalOnProperty(name = "spring.security.oauth2.resourceserver.jwt.issuer-uri", matchIfMissing = false)