Я хотел бы написать правило архюнита, которое проверяет, что классы аннотируются с @configuration весной, не имеют никаких общедоступных полей. < /p>
Например, этот класс должен быть в порядке, Поля вообще нет: < /p>
@Configuration
@EnableWebSecurity
class SecurityConfiguration {
@Bean
SecurityFilterChain securityFilterChain(final HttpSecurity httpSecurity) throws Exception {
httpSecurity.authorizeHttpRequests(authorize -> authorize.anyRequest().permitAll()).csrf(AbstractHttpConfigurer::disable);
return httpSecurity.build();
}
}
< /code>
Этот класс также должен быть в порядке, есть поле, но это частный статический финал: < /p>
@Configuration
class JdkClientHttpRequestFactoryConfiguration {
private static final int DEFAULT_READ_TIMEOUT = 5;
@Bean
JdkClientHttpRequestFactory jdkClientHttpRequestFactory() {
final JdkClientHttpRequestFactory jdkClientHttpRequestFactory = new JdkClientHttpRequestFactory();
jdkClientHttpRequestFactory.setReadTimeout(Duration.ofSeconds(DEFAULT_READ_TIMEOUT));
return jdkClientHttpRequestFactory;
}
}
< /code>
и не сбои, если какие -либо публичные поля. < /p>
Я попробовал это правило: < /p>
@Test
void fieldShouldAllBePrivateToProtectEncapsulation() {
fields().that(areNotConfiguration())
.and().areNotStatic()
.and().areNotFinal()
.should().bePrivate()
.check(importedClasses);
}
private DescribedPredicate
Подробнее здесь: https://stackoverflow.com/questions/794 ... ringcglib0