1
resposta

IllegalStateException ao executar o projeto

O console acusa que teve um erro ao processar as condições no org.springdoc.webmvc.ui.SwaggerConfig.swaggerWelcome

@Autowired
    private SecurityFilter securityFilter;

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        return http.csrf(csrf -> csrf.disable())
                .sessionManagement(sm -> sm.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
                .authorizeHttpRequests(req -> {
                    req.requestMatchers("/login").permitAll();
                    req.requestMatchers("/swagger-ui.html").permitAll();
                    req.requestMatchers("/v3/api-docs/**").permitAll();
                    req.requestMatchers("/swagger-ui/**").permitAll();
                    req.anyRequest().authenticated();
                })
                .addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
                .build();
    }
<dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.8.15</version>
    </dependency>

Estou no SpringBoot 4.0.0

1 resposta

Bom dia !

O problema aqui não é a configuração de segurança em si ela está conceitualmente correta. O erro está na combinação de versões que você está usando.

Você está rodando:

  • Spring Boot 4.0.0
  • springdoc-openapi 2.8.15

Atualmente, o SpringDoc NÃO é compatível com Spring Boot 4.x.

O SpringDoc v2 foi feito para:

  • Spring Boot 3.x
  • Spring Framework 6.x

Já o Spring Boot 4 usa:

  • Spring Framework 7
  • Mudanças internas grandes (especialmente em auto-configuração, WebMvc e Security)

Por isso o erro aparece exatamente aqui:

org.springdoc.webmvc.ui.SwaggerConfig.swaggerWelcome

Esse tipo de IllegalStateException ao processar condições é clássico de:

  • Auto-configuração tentando carregar classes/métodos
  • Que não existem mais ou mudaram no Spring 7

Não é bug no seu código é incompatibilidade de ecossistema.

O próprio curso assume Spring Boot 3, não 4.

O que você pode fazer

Voltar o projeto para Spring Boot 3.x

Exemplo seguro no pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.1</version>
    <relativePath/>
</parent>

E manter o SpringDoc:

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.8.15</version>
</dependency>

Essa combinação:

  • Funciona
  • É a usada no curso
  • Não gera esse erro