org.springframework.http.HttpMethod è ora una classe e non più un enum

Questa regola segnala l'uso di org.springframework.http.HttpMethod dove il codice presume che si tratti di un enum.

In Spring Framework 6, org.springframework.http.HttpMethod è stato ristrutturato da un enum a una classe standard. Mentre le costanti comunemente utilizzate, come HttpMethod.GET e HttpMethod.POST sono ancora disponibili, ma il codice che si basa su caratteristiche specifiche di un enum non verrà più compilato o fallirà in fase di esecuzione.

Gli sviluppatori devono migrare il loro codice verso alternative compatibili con le classi, come la sostituzione di EnumSet<HttpMethod> con Set<HttpMethod> e switch dichiarazioni con if-else blocchi.

L'esempio seguente mostra un utilizzo non valido che verrà segnalato:


import org.springframework.http.HttpMethod;
import java.util.EnumSet;
public class InvalidHttpMethodUsage {
private EnumSet<HttpMethod> methods = EnumSet.of(HttpMethod.GET, HttpMethod.POST);
    public void handle(HttpMethod method) {
    switch (method) {
          case GET:
              System.out.println("GET");
              break;
        }
    }
}

L'esempio seguente mostra un uso valido della migrazione:


import org.springframework.http.HttpMethod;
import java.util.Set;
public class ValidHttpMethodUsage {
private Set<HttpMethod> methods = Set.of(HttpMethod.GET, HttpMethod.POST);
    public void handle(HttpMethod method) {
    if (HttpMethod.GET.equals(method)) {
     System.out.println("GET");
        }
    }
}

Per ulteriori informazioni, consultare le seguenti risorse: