Spring

Se você não aprender Spring agora, você irá se odiar depois

Tem tanta coisa para se aprender no mundo da programação que acabamos ficando perdidos. É difícil saber por onde iniciar.

Qual seria o melhor caminho? Hibernate? JSF? Padrões de projeto? GWT? CDI? Spring?

Esse tipo de dúvida não é um desprivilegio dos programadores, mas, como o assunto aqui é desenvolvimento de software em Java, então, eu posso te ajudar a fazer uma boa escolha!

Qual escolha!? Estou falando do Spring.

Vou te mostrar um excelente caminho, apresentar os motivos pelos quais você pode segui-lo sem medo e, caso você decida por essa jornada, te indicar um super material.

Continue aqui comigo para conversarmos sobre:

  • Por que aprender sobre o Spring é uma excelente escolha para sua carreira de programador?
  • O que exatamente é o Spring?
  • Como começar seus estudos?

Claro, vou fazer apenas uma parte, que é dizer para onde você pode ir, mas é preciso que você faça a sua: se dedicar.

Está disposto a isso? Vamos lá então!

Por que aprender sobre o Spring é uma excelente escolha

Se você procura uma tecnologia Java que te dê prazer em programar e tenha oportunidades com excelentes salários, então essa pode ser uma das página mais importantes que você já visitou.

Nesse artigo inteiro e especialmente nessa sessão, nós vamos falar sobre o ecossistema Spring e as boas razões que você tem para seguir uma carreira com ele.

Desenvolvedor Spring Framework: Salários de Até R$10 Mil

Falar de salário é sempre difícil, porque muitas coisas podem influenciar.

Mas eu sei que dinheiro também é importante pra você (e pra quem não é?), por isso não podemos deixar de falar sobre esse assunto.

Desenvolvedores Spring podem ganhar muito dinheiro!

Em comparação com outras carreiras, você vai notar que um programador Spring pode ganhar muito melhor.

Hoje é muito comum o Spring Framework estar na lista de pré-requisitos de boas vagas de emprego para programadores Java.

Eu fiz uma rápida pequisa em um dos sites de vagas de emprego de tecnologia mais conhecidos no Brasil, o CEVIU, e veja o que encontrei.

Vagas e salários para programadores Spring

Você pode achar que seja muito bom pra ser verdade.

Talvez você conheça alguém que tenha pós-graduação na área, conhece um pouco de Spring, mas ganha pouco ou não consegue um emprego legal.

A questão é que os bons salários existem sim, mas você precisa estar qualificado para merecê-los!

Se você se dedicar de verdade, em pouco tempo já pode ter um emprego ganhando a partir de R$4.000,00 mais benefícios.

E com mais experiência, pode chegar a mais de R$10.000,00.

E eu sei disso só porque fiz uma pesquisa em sites de emprego?

Claro que não! Como trabalho há muito tempo como programador, conheço muitas pessoas. Algumas com muito sucesso e outras nem tanto.

A diferença entre elas é o quanto cada uma se dedica aos estudos para entregar resultados profissionais nos projetos que trabalham.

Ah! E não podemos esquecer também da enorme possibilidade de você trabalhar remoto para empresas no Brasil e exterior.

Se o trabalho for para fora do Brasil (mesmo que você trabalhe do seu quarto), você ainda pode ganhar em dólar!

É confiável? Posso usar nos meus projetos em produção?

Desde a sua primeira liberação, em Outubro de 2002, o Spring tem evoluído muito, com diversos projetos maduros, seguros e robustos para utilizarmos em produção.

Eles são Open Source, o que faz com que milhares de programadores do mundo todo possam contribuir, procurar bugs e falhas de segurança, o que o torna sim confiável e ótimo pra usar em produção.

Eu mesmo já perdi as contas de quantos projetos importantes eu usei algo do Spring.

Além disso, milhares de empresas espalhadas pelo mundo o utilizam no seu dia a dia.

Então, essa pode ser a sua chance de se aprofundar e conseguir um emprego melhor, ganhar um aumento, mudar de vida.

Logo, é ou não é importante você aprender sobre ele? :)

O que é o Spring?

Há muito tempo…

…não, não faz tanto tempo assim…

…o pessoal do Java EE, lá na época em que a Sun Microsystems a controlava, havia criado alguns padrões difíceis de programar, evoluir e dar manutenção.

Então os criadores do Spring pensaram: “acho que dá pra fazer algo mais simples, leve e flexível que isso”.

E assim foi, o Spring surgiu como uma alternativa ao Java EE, e seus programadores sempre se preocuparam para que ele fosse o mais simples e leve possível.

Hoje ele é composto por diversos projetos que ajudam os desenvolvedores a criarem aplicações Java mais simples, rápidas e flexíveis!

Para que você tenha uma visão melhor sobre ele, vou apresentar aqui os principais projetos e conceitos desse framework.

Ainda nesse artigo quero falar sobre:

  • O Spring Framework (que nos dá suporte a injeção de dependências, gerenciamento de transações, criação de aplicações web com Spring MVC, entre outras coisas)
  • Spring Data JPA
  • Spring Security
  • Spring Boot (torna o desenvolvedor mais produtivo)

O Spring não resume-se a isso, mas esses são os pontos mais importantes para direcionarmos nossos estudos.

O projeto Spring Framework

Ele foi pensado para que nossas aplicações pudessem focar mais na regra de negócio e menos na infraestrutura.

Inclusive, ele também é a base para todos os outros projetos que fazem parte do ecossistema Spring como, por exemplo, Spring Data, Spring Security, Spring Boot.

Dentre suas principais funcionalidades, podemos destacar:

  • O Spring MVC (um framework para criação de aplicações web e serviços RESTful)
  • Injeção de dependencias (Dependency injection – DI)
  • Suporte para JDBC, JPA

Vamos a elas.

Spring MVC

Provavelmente a funcionalidade mais famosa do Spring Framework seja Spring MVC!

Ele te ajuda no desenvolvimento de aplicações web robustas, flexíveis e com uma clara separação de responsabilidades nos papéis do tratamento da requisição.

MVC é acrônimo de Model, View e Controller, e entender bem o que cada um deve fazer na aplicação é importante para termos um sistema bem escrito e fácil para dar manutenção.

Vamos parar um pouco e pensar no que fazemos todos os dias quando estamos na internet.

Primeiro abrimos um browser (Chrome, Safari, Firefox), digitamos uma URL na barra de endereços, pressionamos a tecla “Enter” e pronto!

Se nada der errado, uma página HTML será exibida para nós.

Mas, o que acontece entre o “Enter” e a página HTML ser renderizada?

Claro que existem centenas de linguagens de programação e frameworks diferentes, mas nós vamos pensar no contexto do Spring MVC.

Fluxo do Spring MVC

1. Acessamos uma URL no browser que envia a requisição HTTP para o servidor que roda a aplicação web com Spring MVC. Perceba que quem recebe a requisição é o controlador do framework, o Spring MVC.

2. O controlador do framework irá procurar qual classe é responsável por tratar essa requisição, entregando a ela os dados enviados pelo browser. Essa classe faz o papel do controller.

3. O controller passa os dados para o model, que por sua vez executa todas as regras de negócio, como cálculos, validações e acesso ao banco de dados.

4. O resultado das operações realizadas pelo model é retornado ao controller.

5. O controller retorna o nome da view, junto com os dados que ela precisa para renderizar a página.

6. O Framework encontra a view que processa os dados, transformando o resultado em um HTML.

7. Finalmente, o HTML é retornado ao browser do usuário.

Pare um pouco e volte na figura acima, leia mais uma vez todos os passos desde a requisição do browser, até a página ser renderizada de volta a ele.

Como você deve ter notado, temos o Controller tratando a requisição. Ele é o primeiro componente que nós vamos programar para receber os dados enviados pelo usuário.

Mas é muito importante estar atento e não cometer erros adicionando regras de negócio, acessando banco de dados ou fazendo validações nessa camada, precisamos passar essa responsabilidade para o Model.

No Model, pensando em algo prático, é o local certo para usarmos o JPA/Hibernate para salvar ou consultar algo no banco de dados, calcular o valor do frete para entrega de um produto, etc.

A View usará esses dados para gerar o HTML que será enviado de volta ao usuário.

É importante destacar que, no Controller e no Model estávamos programando em classes Java, e não em algo visual para o browser exibir pro usuário.

Essa é a ideia do MVC, separar claramente a responsabilidade de cada componente dentro de uma aplicação.

Injeção de dependências

É um padrão de desenvolvimento que utilizamos para manter o baixo acoplamento entre as classes de um mesmo projeto.

Na prática, ao invés de você fazer isso:

public class ServicoCliente {
  
  // Nesse exemplo estou supondo que "RepositorioCliente" é uma
  // interface. Mas poderia ser uma classe abstrata ou
  // mesmo uma classe concreta.
  private RepositorioCliente repositorio = new RepositorioClienteImpl();

  ...
}

… Você vai fazer isso:

public class ServicoCliente {

  @Autowired
  private RepositorioCliente repositorio;

  ...
}

A anotação “Autowired” avisa ao Spring Framework para injetar uma instância da interface “RepositorioCliente” na propriedade “repositorio”.

Importante notar que o desacoplamento é o benefício direto, temos vários outros indiretos. Um exemplo de benefício indireto seria o gerenciamento de escopos – requisição, sessão, aplicação e customizados – para as instâncias dos nossos objetos.

Suporte para JDBC, JPA

É oferecido para os usuários do Spring Framework uma camada de abstração para essas tecnologias.

Assim a configuração que você precisa fazer para trabalhar com banco de dados é bem menor.

Isso é muito importante considerando que a maioria das aplicações que desenvolvemos tem integração com algum banco de dados.

O projeto Spring Data JPA

O suporte do Spring Framework para JPA já é muito bom, mas o projeto Spring Data JPA vai bem além. :)

Uma coisa é você criar seu repositório (ou DAO) assim:

public interface RepositorioCliente {

  Cliente salvar(Cliente cliente);

  void deletar(Cliente cliente);

  Cliente buscar(Long id);  
}
public class RepositorioClienteImpl implements RepositorioCliente {

  @Autowired
  private EntityManager entityManager;

  public Cliente salvar(Cliente cliente) {
    return entityManager.merge(cliente);
  }

  public void deletar(Cliente cliente) {
    entityManager.remove(entityManager.getReference(
                            Cliente.class, cliente.getId()));
  }

  public Cliente buscar(Long id) {
    return entityManager.find(Cliente.class, id);
  }
}

Outra, bem mais produtiva, é você utilizar o Spring Data JPA e fazer assim:

public interface RepositorioCliente extends JpaRepository<Cliente, Long> {

}

Talvez você pergunte:

Onde está a implementação!?

Simplesmente, não precisa. O Spring Data JPA vai criar uma pra você em tempo de execução!

Muito legal, não é mesmo?

O projeto Spring Security

Como o próprio nome denuncia, esse projeto trata da segurança a nível de aplicação. Ele tem um suporte excelente para autenticação e autorização.

Ele torna bem simples a parte de autenticação. Com algumas poucas configurações já podemos ter uma autenticação via banco de dados, LDAP ou mesmo por memória. Sem falar nas várias integrações que ele já suporta e na possibilidade de criar as suas próprias.

Quanto a autorização, ele é bem flexível também. Através das permissões que atribuímos aos usuários autenticados, podemos proteger as requisições web (como as telas do nosso sistema, por exemplo), a simples invocação de um método e até a instância de um objeto.

Sem contar que, por tabela, nós já protegemos as nossas aplicações de diversos ataques como o session fixation (link em inglês) e o cross site request forgery (link em inglês).

O projeto Spring Boot

Imagine você criar um projeto e já sair programando com tudo o que precisa já configurado. Não precisa nem mesmo do servidor web, pois, ele já vem com um!

O Spring Boot favorece a convenção sobre a configuração. E não é só a convenção para que ele próprio funcione e sim para preparar rapidamente as tecnologias que mais utilizamos como JPA, Spring MVC, Thymeleaf, Webjars, Spring Security e uma série de outros projetos.

Dessa forma ele nos libera para já começarmos o nosso projeto com as coisas que mais importam para a nossa aplicação: nossas regras de negócio.

Com certeza, o Spring Boot está levando a produtividade dos programadores Java para o próximo nível.

Como começar seus estudos no mundo Spring

Depois que tomamos a decisão por qual caminho seguir, vem outro desafio: a jornada!

Na prática, o que começa agora é a busca por bons materiais e, provavelmente, por uma comunidade que nos apoie.

A AlgaWorks oferece os dois pra você! :)

O que você precisa fazer agora é clicar na imagem e baixar o nosso e-Book:

FN013-CTA-Lead-Magnet--Img02

Nele você vai aprender:

  • A criar um projeto web do zero
  • Spring MVC, Spring Boot e Thymeleaf
  • Mais produtividade com Spring Tool Suite
  • Código-fonte do projeto incluso

Eu escrevi esse livro para ajudar você a trilhar esse caminho sem ter que perder horas e horas pesquisando e quebrando a cabeça. Espero que goste.

O segundo passo é entrar na comunidade de Java da AlgaWorks. Nossa comunidade tem um engajamento altíssimo dos participantes e lá você vai encontrar várias pessoas dispostas a te ajudar com as dúvidas.

Com certeza, isso é o suficiente para que você comece bem sua jornada.

Ahh! Ainda tem os artigos aqui do blog que procuramos sempre publicar com alta qualidade. É mais uma ajuda pra você.

Conclusão

Esse foi um artigo para te ajudar a começar com o Spring.

Falamos sobre o porquê ele é uma boa escolha para sua carreira de desenvolvedor e sobre os projetos dele que merecem mais sua atenção nesse início. No final, mostrei pra você como começar seus estudos.

Gostou do artigo? Deixe seu comentário abaixo. Me conte se consegui clarear sua cabeça um pouco mais. :)

Grande abraço!

Graduado em Engenharia Elétrica pela Universidade Federal de Uberlândia e detentor das certificações LPIC-1, SCJP e SCWCD.

Olá,

o que você achou deste conteúdo? Conte nos comentários.

Junte-se a mais de 100.000 pessoas

Entre para nossa lista e receba conteúdos exclusivos e com prioridade

Você se Inscreveu com Sucesso!