Desenvolvendo Sua Primeira Aplicação Spring Boot
Antes de começarmos, abra um terminal e vamos verificar a versão do Java e do Maven.
C:\Users\zigui>java -version
java version “1.8.0_241”
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
C:\Users\zigui>mvn -v
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T16:00:29-03:00)
Maven home: C:\NovosProgramas\apache-maven-3.6.1\bin\..
Java version: 13.0.1, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-13.0.1
Default locale: pt_BR, platform encoding: Cp1252
OS name: “windows 10”, version: “10.0”, arch: “amd64”, family: “windows”
Criando o POM
Vamos criar um arquivo chamado pom.xml. O pom.xml é a receita que é utilizada para construir o projeto. Abra um editor de texto e digite o seguinte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>myproject</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.4.RELEASE</version> </parent> <description/> <developers> <developer/> </developers> <licenses> <license/> </licenses> <scm> <url/> </scm> <url/> <!-- Additional lines to be added here... --> </project> |
Para testar você pode executar o comando mvn package. Em uma IDE não há necessidade de fazer o comando.
Adicionando as Dependências Classpath
Spring Boot fornece um número de “Iniciadores” que permite que você adicione jars para o seu classpath.
Nossas aplicações para teste de fumaça utiliza o spring-boot-starter-parent dentro da seção parent do POM.
O spring-boot-starter-parent é um iniciador especial que fornece configurações padrões do Maven.
Também fornece uma seção dependency-management que você pode omitir a tag version.
Outros “Iniciadores” fornecem dependências que você precisará quando desenvolver um tipo específico de aplicação.
Se formos desenvolver uma aplicação web, nós precisaremos adicionar a dependência spring-boot-starter-web.
Antes disso execute o comando: mvn dependency:tree
[INFO]
[INFO] ———————–< com.example:myproject >————————
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ——————————–[ jar ]———————————
[INFO]
[INFO] — maven-dependency-plugin:3.1.1:tree (default-cli) @ myproject —
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 12.521 s
[INFO] Finished at: 2020-02-04T09:35:01-03:00
[INFO] ————————————————————————
O comando mvn dependency:tree imprime a árvore de dependência do seu projeto. Você pode ver as dependências que o spring-boot-starter-parent fornece.
Para adicionar as dependências necessária, edite o seu pom.xml e adicione a dependência spring-boot-starter-web abaixo da seção parent.
1 2 3 4 5 6 7 |
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> |
Execute novamente o mvn dependency:tree e verá que será adicionada mais dependências no projeto como o Tomcat web server e o Spring Boot.
Escrevendo o Código
Para terminar nossa aplicação, nós precisamos criar um arquivo java. Por padrão, o Maven compila o código fonte da pasta src/main/java, então nós precisamos criar essa estrutura e depois criar um arquivo java.
No fim o caminho desse arquivo ficará assim: src/main/java/Example.java. Vamos criar o arquivo Example com o seguinte código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration public class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(Example.class, args); } } |
Apesar de ter pouco código, há muita coisa acontecendo. Iremos ver as partes principais.
As Anotações @RestController e @RequestMapping
A primeira anotação da nossa classe Example é a @RestController. Isso é conhecido como uma anotação estereotipa (stereotype annotation).
Ela fornece dicas para as pessoas que estão lendo o código e para o Spring é fornecido uma regra específica.
Nesse caso, nossa classe é uma web @Controller, o Spring entende que essa classe irá manipular requisições vinda da web.
A anotação @RequestMapping fornece informações sobre o “roteamento”. No Spring qualquer requisição HTTP com o caminho / é mapeado pelo método home.
A anotação @RestController diz ao Spring para renderizar o resultado e retornar para o requisitor.
As anotações @RestController e @RequestMapping são anotações do Spring MVC e não do Spring Boot.
A Anotação @EnableAutoConfiguration
O segundo nível de anotação é o @EnableAutoConfiguration. Essa anotação diz ao Spring Boot “se virar” com a configuração do Spring, baseados nas dependências que você adicionou.
O spring-boot-starter-web adiciona o Tomcat e o Spring MVC, a autoconfiguração assume que você é um desenvolvedor web e configura o Spring de acordo com esse cenário.
Iniciadores e Autoconfiguração
Autoconfiguração é projetado para trabalhar bem com os “Iniciadores”, mas os dois conceitos não estão ligados.
Você é livre para escolher dependências externas dos iniciadores. Ainda assim o Spring Boot fará a melhor configuração para a sua aplicação.
O Método “main”
A parte final da nossa aplicação é o método main. Esse é apenas o método padrão do Java para inicializar uma aplicação.
Nosso método main é controlado pela classe SpringApplication do Spring Boot que executa o run.
SpringApplication sobe a nossa aplicação, iniciando o Spring, o qual inicia a autoconfiguração do Tomcat web server.
Nós precisamos passar Example.class como argumento para o método run para dizer ao SpringApplication que é o primeiro componente Spring.
O args array é também passado para expor quaisquer argumentos da linha de comando.
Deixe um comentário