我只是试图覆盖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
。如果不是static
,则必须创建实例,否则必须具有其外部类的实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句