WebSecurityConfiguration의 기본 동작을 재정의하려는 중이고 정의 된 속성을 기반으로 빈을 초기화하기 위해 자체 조건을 작성해야했습니다. 사용자 정의 조건 클래스 내에 arg 생성자가 정의되지 않았습니다. 그것과 상관없이, 나는 앱을 회전시킬 때 java.lang.NoSuchMethodException
을 얻는다.사용자 정의 스프링 조건으로 인해 java.lang.NoSuchMethodException이 발생 함 : <init>() 예외
이 내 코드는 모습입니다 : 내 응용 프로그램을 시작하려고하면
@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() 내가 잘못하고있는 중이 야 무엇
?
메시지에 줄 번호가 포함되어 있습니까? 또한 클래스의 가시성이 "public"대신 "package-private"인 것처럼 보이므로 패키지 외부의 클래스가 클래스에 액세스 할 수 없게 될 수 있습니다. – Pytry
내부 클래스를 public으로 변경해도 수정되지 않았습니다. 그러나,'DefaultSecurityCondition'을 내부 클래스가 아닌 별도의 클래스로 생성하면 의도 한대로 잘 동작합니다. –