[Spring Framework] – O que é?

Olá pessoal,

Resolvi fazer esse post inspirado no vídeo recem publicado no canal “SpringDeveloper” no youtube, onde o Mark Heckler explora por que os desenvolvedores amam o Spring, os vários componentes do Spring, e como você e sua equipe de desenvolvimento podem começar a construir e implantar aplicativos “Cloud Native” hoje com a produtividade extrema que impulsionou o Spring para o primeiro lugar dos frameworks queridinhos da galera Java no mundo de microserviços.

Historia

Na verdade tem uma longa historia ai, tudo começou em 2002 quando o Rod Johnson resolveu lançar uum livro chamado “J2EE Development without EJB”, desenvovimento J2EE sem EJB, naquela epoca quando se falava em java se falava também em J2EE e muito XML, mas muuuuito xml.

Dai começos a ver o conceito de Inversão de Controle e Injeção de dependencia sendo implementado de uma maneira simplista neste framework, tudo genial.

E acreditem, muita gente adorava XML, e a coisa toda era mais ou menos assim:

O framework foi evoluindo sendo uma proposta de desenvolvimento acelerado sem usar EJB, então você já tinha varios conceitos sendo implementados especialmente para o mundo enterprise. A primeira versão milestone foi lançada somente em 2004, dai seguimos com as seguintes versões e features:

  • Spring 2.0, lançado em 2006, simplificou a configuração de arquivos de configuração em XML.
  • Spring 2.5, lançado em 2007, introduziu ao mundo as configurações por anotações.
  • Spring 3.2, lançado em 2012, introduziu ‘Java configuration’, adicionou suporte ao Java 7, Hibernate 4, Servlet 3.0. 
  • Spring 4.0, lançado em 2014, trouxe suporte ao Java 8
  • Spring Boot também foi lançado em 2014.
  • Spring 5.0 saiu em 2017. Spring Boot 2.x trazendo suporte ao Spring 5.

Acompanhando a Industria

Ta mas, o framework evoluiu tanto assim? A Reposta curta é: SIM. A verdade é que nos últimos anos a quantidade de tecnologia que um programador Java precisa ter para se tornar produtivo é enorme, e uma das principais vantagens em utilizar o spring framework é que ele abstrai muitas dessas tecnologias, e a cada lançamento o suporte a algum framework é adicionado, hoje eu já posso dizer que as grandes áreas do desenvolvimento de uma aplicação enterprise já são cobertas pelo spring de alguma maneira ou de outra, veja a imagem abaixo:

Spring Cloud

Falando de tendencias modernas de desenvolvimento, principalmente quando se fala em cloud native, o suporte e crescimento do spring acaba ficando mais claro, principalmente o projeto Spring Boot.

Se como desenvolvedor quero, por exemplo, desenvolver uma aplicação Web, posso utilizar Spring Web, Servlet puro, ou até algum framework para template como por exemplo o Thymeleaf dentre outros.

Se quero desenvolver Microserviços, nem precisa falar muito, tá lá o Spring Boot, líder de mercado, com um monte de recursos e com o tempo de desenvolvimento extremamente acelerado. Somado a isso ainda temos a familia de projetos spring cloud que meu Deus, cobrem tudo que você irá pensar que vai precisar quando tiver arquiteturando sua solução distribuida: Circuit Breaker, Service Discovery, API Gateway, configuration server e etc.

https://spring.io/microservices

Servless também está sendo coberto pela equipe do spring framework, hoje já é possível encontrar o spring cloud function para esse proposito.

https://spring.io/serverless

Falando em cloud e arquitetura reativa a equipe do spring framework também não ficou pra atras, veja por exemplo o projeto Spring Cloud Stream que permite interagir facilmente com um midleware de mensageria

https://spring.io/projects/spring-cloud-stream

Suporte a linguagem Kotlin

Com o spring também é possível programar usando kotlin, linguagem de programação que tem inumeras vantagens, ela é bem menos verbosa e esta cada vez mais sendo adotada, abaixo um pequeno exemplo:

É isso pessoal, razões não faltam pra aprender os projetos da familia Spring: Spring boot, Spring cloud e os demais projetos.

Recomendo assistirem o vídeo, é bem legal!

Abrcs.
Natanael Fonseca

Novidades do Spring Boot 2.3

Olá,

Acho que se alguém me perguntar o porque o Java ainda está funcionando a todo vapor nos dias atuais, com certeza eu creditaria essa responsabilidade a equipe do spring framework, principalmente ao spring boot. A quantidade de evoluções que vem sendo feitas a cada dia é simplesmente brutal e por isso se você é um Javeiro de mão cheia, com certeza você deveria acompanhar de perto cada nova release que é lançada por eles.

Pensando nisso eu resolvi condensar num post as principais mudanças da ultima versão lançada, spring boot 2.3, são muitas alterações e cheias de nuancias, isso só me faz acreditar que a equipe do spring está indo no caminho certo.

Antes de tudo, algumas caracteristicas importantes:

  • A cada 6 meses podemos esperar por uma release;
  • Não necessariamente isso vale para todos os projetos da família spring, como é o caso do spring framework que é lançado somente quando realmente está com as funcionalidades estáveis.
  • Agora temos suporte ao Micrometer 1.5 (https://micrometer.io/);
  • Full suporte ao Java 14 (https://www.oracle.com/java/technologies/javase/jdk14-archive-downloads.html) ;
  • Agora a construção de containers está mais fácil, estão utilizando a tecnologia buildpacks, desenvolvida pela VMWare e Heroku. ( https://buildpacks.io/ )
  • Agora temos um new ‘goal’ chamado build-image e não precisamos mais usar plugin de terceiros para criar imagens docker do projeto. ( https://docs.spring.io/spring-boot/docs/2.3.0.RELEASE/maven-plugin/reference/html/#build-image)
  • O suporte a ambientes de cloud está cada vez melhor em termos de probes, agora e possivel usar o actuator masi voltado para o Kubernetes, usando por exemplo: Liveness e Readiness.
  • E pra mim a noticia mais impactante, a equipe da spring já começou a anunciar que está migrando tudo para gradle e o suporte ao Maven será cada vez menor. Assim sendo, se você ainda tá usando maven é melhor já ir pensando em mudar para gradle também.

Esse é um resumo do video que coloquei no inicio do post, para as principais features novas vou fazer também novos posts.

Abrcs.

Natanael Fonseca