spring - 自定义 Spring 条件导致 java.lang.NoSuchMethodException : <init>() exception

标签 spring spring-boot spring-security

我只是想覆盖 WebSecurityConfiguration 的默认行为,并且必须编写自己的条件来根据定义的属性启动 bean。 我在自定义条件类中没有定义 arg 构造函数。不管怎样,当我启动应用程序时,我会收到 java.lang.NoSuchMethodException

这就是我的代码的样子:

@Configuration
@ConditionalOnClass(WebSecurityConfigurerAdapter.class)
@Slf4j
public class WebSecurityConfiguration {

    class DefaultSecurityCondition implements Condition {

        public DefaultSecurityCondition(){}

        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {

            if (context.getEnvironment().getProperty("property.server.authorised-clients") == null &&
                    context.getEnvironment().getProperty("property.server.authorised-thumbprints") == null) {
                return true;
            }
            return false;
        }
    }    


    @Configuration
    @Conditional(DefaultSecurityCondition.class)
    @EnableWebSecurity
    public class DefaultAuthorisationConfiguration extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().antMatchers("/").permitAll()
                    .and().httpBasic().disable().authorizeRequests()
                    .and().csrf().disable();
        }
    }
    }

但是,当我尝试启动我的应用程序时,出现以下异常。

java.lang.NoSuchMethodException: com.test.WebSecurityConfiguration$DefaultSecurityCondition.()

我做错了什么?

最佳答案

当它是内部类时,DefaultSecurityCondition必须声明为static。当它不是静态时,如果没有其外部类的实例,则无法创建实例。

关于spring - 自定义 Spring 条件导致 java.lang.NoSuchMethodException : <init>() exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47167759/

相关文章:

spring - 使用 spring-security-bcrypt 插件将 bcrypt 集成到 Grails 中

java - 如何允许 JMS 使用端口 7676

spring - 从docker run命令运行时,来自Docker的图像无法按预期工作

Spring Boot 验证不适用于 javax.validation

postgresql - Postgres 异常错误 : syntax error at or near ":" Position: 46

java - Spring 安全 : 404 on logout

spring - 如何使用 Spring 在启动时加载 sql 函数?

java - Spring:根据配置文件加载其他属性

java.lang.AssertionError : Content type not set even after setting content type as json/application

java - 在同一方法上使用 @Secured 和 @RequestMapping 时出现 ClassFormatError