Polish code to fix warnings

This commit is contained in:
Phillip Webb
2025-10-14 21:51:25 -07:00
parent 34e0382858
commit 8f89bd304f
44 changed files with 53 additions and 48 deletions
@@ -18,7 +18,6 @@ package org.springframework.boot.configurationprocessor;
import java.util.function.BiConsumer;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
@@ -47,7 +46,7 @@ public abstract class PropertyDescriptorTests {
protected ExecutableElement getMethod(TypeElement element, String name) {
return ElementFilter.methodsIn(element.getEnclosedElements())
.stream()
.filter((method) -> ((Element) method).getSimpleName().toString().equals(name))
.filter((method) -> method.getSimpleName().toString().equals(name))
.findFirst()
.orElse(null);
}
@@ -55,7 +54,7 @@ public abstract class PropertyDescriptorTests {
protected VariableElement getField(TypeElement element, String name) {
return ElementFilter.fieldsIn(element.getEnclosedElements())
.stream()
.filter((method) -> ((Element) method).getSimpleName().toString().equals(name))
.filter((method) -> method.getSimpleName().toString().equals(name))
.findFirst()
.orElse(null);
}
@@ -26,7 +26,7 @@ import org.springframework.security.web.SecurityFilterChain;
public class MySecurityConfiguration {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
public SecurityFilterChain securityFilterChain(HttpSecurity http) {
http.securityMatcher(EndpointRequest.toAnyEndpoint());
http.authorizeHttpRequests((requests) -> requests.anyRequest().permitAll());
return http.build();
@@ -28,7 +28,7 @@ import static org.springframework.security.config.Customizer.withDefaults;
public class MySecurityConfiguration {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
public SecurityFilterChain securityFilterChain(HttpSecurity http) {
http.securityMatcher(EndpointRequest.toAnyEndpoint());
http.authorizeHttpRequests((requests) -> requests.anyRequest().hasRole("ENDPOINT_ADMIN"));
http.httpBasic(withDefaults());
@@ -34,7 +34,7 @@ public class DevProfileSecurityConfiguration {
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
SecurityFilterChain h2ConsoleSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain h2ConsoleSecurityFilterChain(HttpSecurity http) {
http.securityMatcher(PathRequest.toH2Console());
http.authorizeHttpRequests(yourCustomAuthorization());
http.csrf(CsrfConfigurer::disable);
@@ -26,7 +26,7 @@ import org.springframework.security.web.SecurityFilterChain;
public class MySecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
public SecurityFilterChain securityFilterChain(HttpSecurity http) {
// Customize the application security ...
http.redirectToHttps(Customizer.withDefaults());
return http.build();
@@ -29,7 +29,7 @@ import org.springframework.security.web.SecurityFilterChain;
public class MyConfiguration {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
public SecurityFilterChain securityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
return http.build();
}
@@ -25,7 +25,7 @@ import org.springframework.security.web.SecurityFilterChain;
public class MySecurityConfiguration {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
public SecurityFilterChain securityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
return http.build();
}
@@ -27,7 +27,7 @@ import org.springframework.security.web.SecurityFilterChain;
public class MyOAuthClientConfiguration {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
public SecurityFilterChain securityFilterChain(HttpSecurity http) {
// @formatter:off
http
.authorizeHttpRequests((requests) -> requests
@@ -27,7 +27,7 @@ import static org.springframework.security.config.Customizer.withDefaults;
public class MySamlRelyingPartyConfiguration {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
public SecurityFilterChain securityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
http.saml2Login(withDefaults());
http.saml2Logout((saml2) -> saml2.logoutRequest((request) -> request.logoutUrl("/SLOService.saml2"))
@@ -124,7 +124,7 @@ class ChildManagementContextInitializer implements BeanRegistrationAotProcessor,
@Override
public @Nullable BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) {
Assert.isInstanceOf(ConfigurableApplicationContext.class, this.parentContext);
BeanFactory parentBeanFactory = ((ConfigurableApplicationContext) this.parentContext).getBeanFactory();
BeanFactory parentBeanFactory = this.parentContext.getBeanFactory();
if (registeredBean.getBeanClass().equals(getClass())
&& registeredBean.getBeanFactory().equals(parentBeanFactory)) {
ConfigurableApplicationContext managementContext = createManagementContext();
@@ -174,7 +174,7 @@ public final class CloudFoundryActuatorAutoConfiguration {
@Bean
@Order(FILTER_CHAIN_ORDER)
SecurityFilterChain cloudFoundrySecurityFilterChain(HttpSecurity http,
CloudFoundryWebEndpointServletHandlerMapping handlerMapping) throws Exception {
CloudFoundryWebEndpointServletHandlerMapping handlerMapping) {
RequestMatcher cloudFoundryRequest = getRequestMatcher(handlerMapping);
http.csrf((csrf) -> csrf.ignoringRequestMatchers(cloudFoundryRequest));
http.securityMatchers((matches) -> matches.requestMatchers(cloudFoundryRequest))
@@ -47,7 +47,7 @@ class RemoteDevtoolsSecurityConfiguration {
@Bean
@Order(SecurityProperties.BASIC_AUTH_ORDER - 1)
SecurityFilterChain devtoolsSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain devtoolsSecurityFilterChain(HttpSecurity http) {
http.securityMatcher(PathPatternRequestMatcher.withDefaults().matcher(this.url));
http.authorizeHttpRequests((requests) -> requests.anyRequest().anonymous());
http.csrf(CsrfConfigurer::disable);
@@ -85,6 +85,7 @@ class ElasticsearchClientConfigurations {
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(ElasticsearchTransport.class)
static class ElasticsearchTransportConfiguration {
@@ -34,6 +34,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* {@link EnableAutoConfiguration Auto-configuration} for Micrometer-based metrics
@@ -68,6 +69,7 @@ public final class MetricsAspectsAutoConfiguration {
return timedAspect;
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnBean(ValueExpressionResolver.class)
static class TagAnnotationHandlersConfiguration {
@@ -34,6 +34,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.boot.mongodb.autoconfigure.MongoAutoConfiguration;
import org.springframework.boot.mongodb.autoconfigure.MongoClientSettingsBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* {@link EnableAutoConfiguration Auto-configuration} for Mongo metrics.
@@ -48,6 +49,7 @@ import org.springframework.context.annotation.Bean;
@ConditionalOnBean(MeterRegistry.class)
public final class MongoMetricsAutoConfiguration {
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(MongoMetricsCommandListener.class)
@ConditionalOnBooleanProperty(name = "management.metrics.mongodb.command.enabled", matchIfMissing = true)
static class MongoCommandMetricsConfiguration {
@@ -73,6 +75,7 @@ public final class MongoMetricsAutoConfiguration {
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(MongoMetricsConnectionPoolListener.class)
@ConditionalOnBooleanProperty(name = "management.metrics.mongodb.connectionpool.enabled", matchIfMissing = true)
static class MongoConnectionPoolMetricsConfiguration {
@@ -49,7 +49,7 @@ class OAuth2AuthorizationServerWebSecurityConfiguration {
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) {
OAuth2AuthorizationServerConfigurer authorizationServer = new OAuth2AuthorizationServerConfigurer();
http.securityMatcher(authorizationServer.getEndpointsMatcher());
http.with(authorizationServer, withDefaults());
@@ -63,7 +63,7 @@ class OAuth2AuthorizationServerWebSecurityConfiguration {
@Bean
@Order(SecurityProperties.BASIC_AUTH_ORDER)
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated()).formLogin(withDefaults());
return http.build();
}
@@ -164,7 +164,7 @@ class OAuth2AuthorizationServerWebSecurityConfigurationTests {
@Bean
@Order(1)
SecurityFilterChain authServerSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain authServerSecurityFilterChain(HttpSecurity http) {
OAuth2AuthorizationServerConfigurer authorizationServer = new OAuth2AuthorizationServerConfigurer();
http.securityMatcher(authorizationServer.getEndpointsMatcher())
.with(authorizationServer, Customizer.withDefaults());
@@ -174,7 +174,7 @@ class OAuth2AuthorizationServerWebSecurityConfigurationTests {
@Bean
@Order(2)
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain securityFilterChain(HttpSecurity http) {
return http.httpBasic(withDefaults()).build();
}
@@ -63,7 +63,7 @@ public final class OAuth2ClientWebSecurityAutoConfiguration {
static class OAuth2SecurityFilterChainConfiguration {
@Bean
SecurityFilterChain oauth2SecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain oauth2SecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
http.oauth2Login(withDefaults());
http.oauth2Client(withDefaults());
@@ -254,7 +254,7 @@ class OAuth2ClientWebSecurityAutoConfigurationTests {
static class TestSecurityFilterChainConfiguration {
@Bean
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) {
return http.securityMatcher("/**")
.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
.build();
@@ -181,7 +181,7 @@ class OAuth2ResourceServerJwtConfiguration {
@Bean
@ConditionalOnBean(JwtDecoder.class)
SecurityFilterChain jwtSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain jwtSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
http.oauth2ResourceServer((resourceServer) -> resourceServer.jwt(withDefaults()));
return http.build();
@@ -69,7 +69,7 @@ class OAuth2ResourceServerOpaqueTokenConfiguration {
@Bean
@ConditionalOnBean(OpaqueTokenIntrospector.class)
SecurityFilterChain opaqueTokenSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain opaqueTokenSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
http.oauth2ResourceServer((resourceServer) -> resourceServer.opaqueToken(withDefaults()));
return http.build();
@@ -885,7 +885,7 @@ class OAuth2ResourceServerAutoConfigurationTests {
static class TestSecurityFilterChainConfig {
@Bean
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) {
http.securityMatcher("/**");
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
return http.build();
@@ -38,7 +38,7 @@ import static org.springframework.security.config.Customizer.withDefaults;
class Saml2LoginConfiguration {
@Bean
SecurityFilterChain samlSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain samlSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
http.saml2Login(withDefaults());
http.saml2Logout(withDefaults());
@@ -450,7 +450,7 @@ class Saml2RelyingPartyAutoConfigurationTests {
static class TestSecurityFilterChainConfig {
@Bean
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) {
return http.securityMatcher("/**")
.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
.build();
@@ -73,7 +73,7 @@ class SpringBootWebSecurityConfiguration {
@Bean
@Order(SecurityProperties.BASIC_AUTH_ORDER)
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
http.formLogin(withDefaults());
http.httpBasic(withDefaults());
@@ -224,7 +224,7 @@ abstract class AbstractEndpointRequestIntegrationTests {
}
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain securityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers(EndpointRequest.toLinks()).permitAll();
requests.requestMatchers(EndpointRequest.to(TestEndpoint1.class).withHttpMethod(HttpMethod.POST))
@@ -194,7 +194,7 @@ class ManagementWebSecurityAutoConfigurationTests {
static class CustomSecurityConfiguration {
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain securityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/foo")).permitAll();
requests.anyRequest().authenticated();
@@ -210,7 +210,7 @@ class ManagementWebSecurityAutoConfigurationTests {
static class TestSecurityFilterChainConfig {
@Bean
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) {
return http.securityMatcher("/**")
.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
.build();
@@ -223,7 +223,7 @@ class ManagementWebSecurityAutoConfigurationTests {
@Bean
@Order(SecurityProperties.BASIC_AUTH_ORDER - 1)
SecurityFilterChain testRemoteDevToolsSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain testRemoteDevToolsSecurityFilterChain(HttpSecurity http) {
http.securityMatcher(PathPatternRequestMatcher.withDefaults().matcher("/**"));
http.authorizeHttpRequests((requests) -> requests.anyRequest().anonymous());
http.csrf((csrf) -> csrf.disable());
@@ -272,7 +272,7 @@ class SecurityAutoConfigurationTests {
static class TestSecurityFilterChainConfig {
@Bean
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain testSecurityFilterChain(HttpSecurity http) {
return http.securityMatcher("/**")
.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
.build();
@@ -56,7 +56,7 @@ public class SecurityConfiguration {
}
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception {
SecurityFilterChain configure(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers(PathPatternRequestMatcher.withDefaults().matcher("/actuator/beans"))
.hasRole("BEANS");
@@ -76,7 +76,7 @@ class ShutdownSampleActuatorApplicationTests {
static class SecurityConfiguration {
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception {
SecurityFilterChain configure(HttpSecurity http) {
http.csrf(CsrfConfigurer::disable);
return http.build();
}
@@ -35,7 +35,7 @@ import static org.springframework.security.config.Customizer.withDefaults;
public class SecurityConfig {
@Bean
public DefaultSecurityFilterChain springWebFilterChain(HttpSecurity http) throws Exception {
public DefaultSecurityFilterChain springWebFilterChain(HttpSecurity http) {
return http.csrf(CsrfConfigurer::disable)
// Demonstrate that method security works
// Best practice to use both for defense in depth
@@ -35,7 +35,7 @@ import static org.springframework.security.config.Customizer.withDefaults;
class SecurityConfiguration {
@Bean
SecurityFilterChain managementSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain managementSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers(EndpointRequest.to(HealthEndpoint.class)).permitAll();
requests.anyRequest().authenticated();
@@ -35,7 +35,7 @@ import static org.springframework.security.config.Customizer.withDefaults;
class SecurityConfiguration {
@Bean
SecurityFilterChain managementSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain managementSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers(EndpointRequest.to(HealthEndpoint.class)).permitAll();
requests.anyRequest().authenticated();
@@ -35,7 +35,7 @@ import static org.springframework.security.config.Customizer.withDefaults;
class SecurityConfiguration {
@Bean
SecurityFilterChain managementSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain managementSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers(EndpointRequest.to(HealthEndpoint.class)).permitAll();
requests.anyRequest().authenticated();
@@ -35,7 +35,7 @@ import static org.springframework.security.config.Customizer.withDefaults;
class SecurityConfiguration {
@Bean
SecurityFilterChain managementSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain managementSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers(EndpointRequest.to(HealthEndpoint.class)).permitAll();
requests.anyRequest().authenticated();
@@ -75,7 +75,7 @@ public class SampleMethodSecurityApplication implements WebMvcConfigurer {
protected static class ApplicationSecurity {
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception {
SecurityFilterChain configure(HttpSecurity http) {
http.csrf(CsrfConfigurer::disable);
http.authorizeHttpRequests((requests) -> {
requests.dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll();
@@ -94,7 +94,7 @@ public class SampleMethodSecurityApplication implements WebMvcConfigurer {
protected static class ActuatorSecurity {
@Bean
SecurityFilterChain actuatorSecurity(HttpSecurity http) throws Exception {
SecurityFilterChain actuatorSecurity(HttpSecurity http) {
http.csrf(CsrfConfigurer::disable);
http.securityMatcher(EndpointRequest.toAnyEndpoint());
http.authorizeHttpRequests((requests) -> requests.anyRequest().authenticated());
@@ -45,7 +45,7 @@ public class SampleWebSecureCustomApplication implements WebMvcConfigurer {
protected static class ApplicationSecurity {
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception {
SecurityFilterChain configure(HttpSecurity http) {
http.csrf(CsrfConfigurer::disable);
http.authorizeHttpRequests((requests) -> {
requests.dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll();
@@ -48,7 +48,7 @@ public class SampleWebSecureJdbcApplication implements WebMvcConfigurer {
protected static class ApplicationSecurity {
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception {
SecurityFilterChain configure(HttpSecurity http) {
http.csrf(CsrfConfigurer::disable);
http.authorizeHttpRequests((requests) -> {
requests.dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll();
@@ -45,7 +45,7 @@ class CustomServletPathErrorPageTests extends AbstractErrorPageTests {
static class SecurityConfiguration {
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception {
SecurityFilterChain configure(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers("/public/**").permitAll();
requests.anyRequest().fullyAuthenticated();
@@ -44,7 +44,7 @@ class CustomServletPathUnauthenticatedErrorPageTests extends AbstractUnauthentic
static class SecurityConfiguration {
@Bean
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers("/error").permitAll();
requests.requestMatchers("/public/**").permitAll();
@@ -44,7 +44,7 @@ class ErrorPageTests extends AbstractErrorPageTests {
static class SecurityConfiguration {
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception {
SecurityFilterChain configure(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers("/public/**").permitAll();
requests.anyRequest().fullyAuthenticated();
@@ -45,7 +45,7 @@ class NoSessionErrorPageTests extends AbstractErrorPageTests {
static class SecurityConfiguration {
@Bean
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) {
http.sessionManagement((session) -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests((requests) -> {
requests.requestMatchers("/public/**").permitAll();
@@ -99,7 +99,7 @@ class SampleWebSecureApplicationTests {
static class SecurityConfiguration {
@Bean
SecurityFilterChain configure(HttpSecurity http) throws Exception {
SecurityFilterChain configure(HttpSecurity http) {
http.csrf(CsrfConfigurer::disable);
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers("/public/**").permitAll();
@@ -44,7 +44,7 @@ class UnauthenticatedErrorPageTests extends AbstractUnauthenticatedErrorPageTest
static class SecurityConfiguration {
@Bean
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) {
http.authorizeHttpRequests((requests) -> {
requests.requestMatchers("/error").permitAll();
requests.requestMatchers("/public/**").permitAll();