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)
只有当我的 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)