Vamos lá amigos, o Spring Boot 3 chegou, e com isso a gente tem algumas coisas novas que pode explorar em nossos projetos, então que tal darmos uma olhada nisso. Se isso lhe interessou, vem comigo.
1. Java17
A primeira grande mudança e novidade do Spring Boot 3 é que ele além de suportar 100% o Java 17, ele passa a exigir o Java 17 como a versão mínima para rodar. Então meus amigos, é chegada a hora de darmos upgrades em nossos ambientes. E com isso , e com isso tem algumas coisinhas que a gente consegue já usar de vantagem.
1.1 Record
O Java 14 trouxe essa para nós, e eu já até falei a respeito disso aqui:
E isso é uma baita melhoria, já que não precisamos mais escrever vários getters e setters. E principalmente, esse cara ajuda a diminuir a dependencia do Lombok em nossos projetos, e alias, o Records inclusive funciona um pouco diferente do @Data do Lombok, e eu já falei a respeito disso aqui também.
1.2 Text blocks
Text blocks foram introduzidos no Java 13 e na versão final a partir do Java 15. E isso nos ajuda a criar strings de multiplas linhas de maneira mais eficiente.
1.3 Switch expression
Switch expressions foram introduzidas no Java 12 e na versão final a partir do Java 14.
E esse novo switch contém duas features matadoras, que permite que o case use multiplas constantes, e sempre vai ter um valor de retorno. A nova sintaxa de x-> é muito mais consisa de usar e elimina o erro de esquecer de colocar o break em cada case.
String nome = "Sergio";
int retorno = switch (nome) {
case "A" -> 1;
case "Sergio", "Lopes" -> 2;
default -> 0;
};
1.4 Pattern Matching Pattern Matching
Pattern matching agora simplifica o uso do instanceof
.
Object helloWorld = "Está funcionando";
if (helloWorld instanceof String s) {
return s.toLowerCase();
} else {
return "Não detectou ....";
}
E da para usar até em Switch case:
static double getDoubleUsingSwitch(Object o) {
return switch (o) {
case Integer i -> i.doubleValue();
case Float f -> f.doubleValue();
case String s -> Double.parseDouble(s);
default -> 0d;
};
}
1.5 Sealed sealed class
As classes seladas foram introduzidas Java 15 e se torna padrão no Java 17, e já falamos disso aqui.
A principal função da classe selada é te dar o controle sobre a herança da classe. Veja ai um exemplo:
public abstract sealed class Teste permits Teste1, Teste2 {
public abstract void doSomething();
}
public non-sealed class Teste1 extends Teste{
@Override
public void doSomething() {
System.out.println("Teste1 fez algo");
}
}
public non-sealed class Teste2 extends Teste{
@Override
public void doSomething() {
System.out.println("Teste 2 fez algo");
}
}
2. Jakarta EE 9 e 10
Outra mudança importante é que agora ele suporta o JakartaEE 10, usando as especificações Servlet 6.0 e JPA 3.1 por padrão.
Então tudo que antes era tipo javax.servlet
no pacote agora passar a ser jakarta.servlet
. E a maioria dos seus importes para javax só vai precisar trocar para jakarta que vão funcionar sem precisar fazer nada.
3. Spring Native
Spring Native eu acho que é o maior upgrade nessa versão. Usando a GraalVM para complicar a aplicação em um arquivo de execução local. E isso dá um ganho espetacular para a velocidade de StartUp, performace e uso de memória.
Do jeito tradicional compilamos para bytecode, e a JVM interpreta para código de maquina e executa, já o Spring Native compila para código nativo usando AOT e você tem a execução direta do Runtime. Tem vários pontos de vantagem, e eu recomendo você ler outro artigo meu a respeito para entender os prós e contras.
5. Outros upgrades
Spring Boot 3 claro vai trazer o Spring 6 e vai te permitir também usar :
• Kotlin 1.7+
• Lombok 1.18.22+ (JDK17 support version)
• Gradle 7.3+
6. Veja um pouco mais de detalhes
E para mostrar isso um pouco mais, tem um vídeo aqui no canal para ajudar a entender um pouco mais e dar alguns detalhes a mais:
E não esquece, se não está seguindo o canal, segue a gente lá, ajuda o canal a crescer a gente fazer ainda mais conteúdo bacana.
Há um pequeno erro de portugues na parte do graalVM
CurtirCurtir
Opa, valeu, vou corrigir
CurtirCurtir