🚀 Como criar um novo projeto Spring Boot

🚀 Como criar um novo projeto Spring Boot

Source: Dev.to

📋 PrĂ©-requisitos ## 🎯 Parte 1: Configurar Spring Initializr ## O que Ă© Spring Initializr? ## Passo a Passo ## 1.1 Acessar o Spring Initializr ## 1.2 Configurar o Projeto ## 1.3 Adicionar DependĂȘncias ## 1.4 Gerar o Projeto ## 1.5 Descompactar o Projeto ## đŸ—ïž Parte 2: Criar Estrutura de Pacotes ## O que sĂŁo pacotes? ## Passo a Passo ## 2.1 Importar no IntelliJ IDEA ## 2.2 Entender a Estrutura Atual ## 2.3 Criar os Pacotes ## ⚙ Parte 3: Configurar application.yml ## Por que configurar? ## Passo a Passo ## 3.1 Converter .properties para .yml ## 3.2 Adicionar ConfiguraçÔes BĂĄsicas ## 🚀 Parte 4: Executar a Aplicação ## Momento da Verdade ## Passo a Passo ## 4.1 Executar pelo IntelliJ ## 4.2 Verificar se Funcionou ## 4.3 Testar no Navegador ## ✅ CritĂ©rios de Aceite - Checklist Final ## Configurar Spring Initializr ## Criar Estrutura de Pacotes ## Configurar application.yml ## Executar Aplicação ## 🐛 Problemas Comuns e SoluçÔes ## Erro: "Java version mismatch" ## Erro: "Port 8080 already in use" ## DependĂȘncias nĂŁo baixam ## IntelliJ nĂŁo reconhece cĂłdigo Kotlin ## 🎓 Conceitos Importantes para Entender ## O que Ă© Spring Boot? ## O que Ă© API REST? ## O que Ă© Gradle? ## 💡 Dicas ## 🎉 ParabĂ©ns Para: Desenvolvedor Backend JĂșnior Iniciante Objetivo: Criar o projeto Spring Boot + Kotlin do serviço de faturas Tempo estimado: 2-3 horas NĂ­vel de dificuldade: ⭐⭐ Iniciante-IntermediĂĄrio Antes de começar, verifique se vocĂȘ tem instalado: É uma ferramenta web que gera automaticamente a estrutura inicial de um projeto Spring Boot. Pense nele como um "criador de projetos automĂĄtico" que jĂĄ configura tudo para vocĂȘ começar a programar rapidamente. Preencha os campos EXATAMENTE como descrito abaixo: Na seção Dependencies (lado direito), clique em "ADD DEPENDENCIES" e adicione: Spring Boot Actuator (opcional, mas recomendado) Agora vocĂȘ tem a estrutura bĂĄsica do projeto! 🎉 Pacotes sĂŁo pastas que organizam o cĂłdigo. É como organizar documentos em gavetas: cada tipo de arquivo vai em uma gaveta especĂ­fica. ⏱ Dica: Primeira vez pode demorar 5-10 minutos baixando bibliotecas. É normal! Depois de abrir, vocĂȘ verĂĄ algo assim: O que cada pasta significa: Vamos criar 4 pacotes para organizar nosso cĂłdigo seguindo o padrĂŁo de "arquitetura em camadas": Por que essa estrutura? Essa separação Ă© chamada de Separation of Concerns - cada camada tem uma responsabilidade especĂ­fica! O arquivo de configuração define como sua aplicação se comporta: em que porta roda, nome da aplicação, configuraçÔes de banco, etc. O Spring Initializr cria um arquivo application.properties, mas vamos usar .yml que Ă© mais organizado. Abra o arquivo application.yml e adicione: O que cada configuração faz: Vamos subir a aplicação pela primeira vez. 😊 Observe o console (painel inferior do IntelliJ). VocĂȘ deve ver: ✅ Se vocĂȘ viu isso, PARABÉNS! Sua aplicação estĂĄ rodando! 🎉 Isso estĂĄ CORRETO! 😎 A pĂĄgina de erro aparece porque ainda nĂŁo criamos nenhum endpoint. O importante Ă© que a aplicação estĂĄ respondendo! Marque cada item que vocĂȘ completou: Causa: VersĂŁo errada do Java configurada Solução: Causa: Outra aplicação jĂĄ estĂĄ usando a porta 8080 Solução: Causa: Problema de rede ou cache do Gradle Solução: Causa: Plugin Kotlin nĂŁo instalado Solução: É um framework (conjunto de ferramentas) que facilita criar aplicaçÔes Java/Kotlin. Ele jĂĄ vem com muita coisa pronta, entĂŁo vocĂȘ foca na lĂłgica do seu negĂłcio. Analogia: É como comprar um carro pronto ao invĂ©s de construir cada peça do zero. É uma forma de aplicaçÔes conversarem entre si usando HTTP (mesmo protocolo do navegador). VocĂȘ cria "endpoints" (URLs) que recebem e envolvam dados. É uma ferramenta que: Analogia: É como um assistente que busca todas as ferramentas que vocĂȘ precisa e organiza tudo. NĂŁo copie e cole cĂłdigo sem entender! Leia cada linha, tente compreender. Se nĂŁo entender algo, pergunte! Erros sĂŁo normais VocĂȘ vai ver MUITAS mensagens de erro. Aprenda a lĂȘ-las com calma. Geralmente a Ășltima linha diz o problema. Documente suas dĂșvidas Anote o que nĂŁo entendeu para perguntar depois. Isso mostra proatividade! Commits frequentes Quando algo funcionar, salve no Git. É como criar pontos de restore de um jogo. Se vocĂȘ chegou atĂ© aqui e sua aplicação estĂĄ rodando, vocĂȘ acabou de: ✅ Criar seu primeiro projeto Spring Boot ✅ Entender estrutura de pacotes ✅ Configurar uma aplicação ✅ Executar um servidor web Isso Ă© MUITA coisa para um dia de trabalho! 🚀 Lembre-se: Todo desenvolvedor sĂȘnior jĂĄ esteve no seu lugar. A diferença Ă© que eles persistiram e continuaram aprendendo. VocĂȘ estĂĄ no caminho certo! đŸ’Ș Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse CODE_BLOCK: cd ~/Documentos/projetos/ unzip invoice-service.zip cd invoice-service Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: cd ~/Documentos/projetos/ unzip invoice-service.zip cd invoice-service CODE_BLOCK: cd ~/Documentos/projetos/ unzip invoice-service.zip cd invoice-service CODE_BLOCK: invoice-service/ ├── src/ │ ├── main/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── invoice/ │ │ │ └── InvoiceServiceApplication.kt │ │ └── resources/ │ │ └── application.properties │ └── test/ ├── build.gradle.kts └── settings.gradle.kts Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: invoice-service/ ├── src/ │ ├── main/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── invoice/ │ │ │ └── InvoiceServiceApplication.kt │ │ └── resources/ │ │ └── application.properties │ └── test/ ├── build.gradle.kts └── settings.gradle.kts CODE_BLOCK: invoice-service/ ├── src/ │ ├── main/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── invoice/ │ │ │ └── InvoiceServiceApplication.kt │ │ └── resources/ │ │ └── application.properties │ └── test/ ├── build.gradle.kts └── settings.gradle.kts CODE_BLOCK: src/main/kotlin/com/invoice/ ├── controller/ (endpoints da API) ├── service/ (lĂłgica de negĂłcio) ├── model/ (classes de dados) ├── repository/ (acesso a dados) └── InvoiceServiceApplication.kt Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: src/main/kotlin/com/invoice/ ├── controller/ (endpoints da API) ├── service/ (lĂłgica de negĂłcio) ├── model/ (classes de dados) ├── repository/ (acesso a dados) └── InvoiceServiceApplication.kt CODE_BLOCK: src/main/kotlin/com/invoice/ ├── controller/ (endpoints da API) ├── service/ (lĂłgica de negĂłcio) ├── model/ (classes de dados) ├── repository/ (acesso a dados) └── InvoiceServiceApplication.kt CODE_BLOCK: server: port: 8080 spring: application: name: invoice-service logging: level: com.invoice: DEBUG Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: server: port: 8080 spring: application: name: invoice-service logging: level: com.invoice: DEBUG CODE_BLOCK: server: port: 8080 spring: application: name: invoice-service logging: level: com.invoice: DEBUG CODE_BLOCK: package com.invoice import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication class InvoiceServiceApplication fun main(args: Array<String>) { runApplication<InvoiceServiceApplication>(*args) } Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: package com.invoice import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication class InvoiceServiceApplication fun main(args: Array<String>) { runApplication<InvoiceServiceApplication>(*args) } CODE_BLOCK: package com.invoice import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication class InvoiceServiceApplication fun main(args: Array<String>) { runApplication<InvoiceServiceApplication>(*args) } CODE_BLOCK: . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.x) ... Started InvoiceServiceApplication in 2.345 seconds Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.x) ... Started InvoiceServiceApplication in 2.345 seconds CODE_BLOCK: . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.x) ... Started InvoiceServiceApplication in 2.345 seconds CODE_BLOCK: ./gradlew clean build --refresh-dependencies Enter fullscreen mode Exit fullscreen mode CODE_BLOCK: ./gradlew clean build --refresh-dependencies CODE_BLOCK: ./gradlew clean build --refresh-dependencies - Java 17 ou superior - Execute no terminal: java -version - IntelliJ IDEA (Community) - Download aqui - Git - Execute: git --version - Abra seu navegador - Acesse: https://start.spring.io/ - VocĂȘ verĂĄ uma pĂĄgina com vĂĄrios campos de configuração - Spring Web O que faz: Permite criar APIs REST (endpoints HTTP) Por que precisa: Vamos criar endpoints para gerenciar faturas - O que faz: Permite criar APIs REST (endpoints HTTP) - Por que precisa: Vamos criar endpoints para gerenciar faturas - Spring DevTools O que faz: Reinicia automaticamente a aplicação quando vocĂȘ salva o cĂłdigo Por que precisa: Agiliza o desenvolvimento, vocĂȘ nĂŁo precisa parar e iniciar manualmente - O que faz: Reinicia automaticamente a aplicação quando vocĂȘ salva o cĂłdigo - Por que precisa: Agiliza o desenvolvimento, vocĂȘ nĂŁo precisa parar e iniciar manualmente - Spring Boot Actuator (opcional, mas recomendado) O que faz: Fornece endpoints de monitoramento (/health, /metrics) Por que precisa: Útil para verificar se a aplicação estĂĄ rodando - O que faz: Fornece endpoints de monitoramento (/health, /metrics) - Por que precisa: Útil para verificar se a aplicação estĂĄ rodando - O que faz: Permite criar APIs REST (endpoints HTTP) - Por que precisa: Vamos criar endpoints para gerenciar faturas - O que faz: Reinicia automaticamente a aplicação quando vocĂȘ salva o cĂłdigo - Por que precisa: Agiliza o desenvolvimento, vocĂȘ nĂŁo precisa parar e iniciar manualmente - O que faz: Fornece endpoints de monitoramento (/health, /metrics) - Por que precisa: Útil para verificar se a aplicação estĂĄ rodando - Clique no botĂŁo GENERATE (no final da pĂĄgina) - Um arquivo .zip serĂĄ baixado automaticamente - Salve em uma pasta que vocĂȘ lembre (ex: ~/Documentos/projetos/) - Abra o IntelliJ IDEA - Clique em File → Open - Navegue atĂ© a pasta invoice-service e selecione-a - Clique em OK - Aguarde o IntelliJ baixar as dependĂȘncias (veja a barra de progresso no canto inferior) - src/main/kotlin/ - Onde fica seu cĂłdigo fonte - src/main/resources/ - Arquivos de configuração - src/test/ - Onde ficam os testes - build.gradle.kts - ConfiguraçÔes do projeto e dependĂȘncias - No IntelliJ, navegue atĂ©: src/main/kotlin/com/invoice/ - Clique com botĂŁo direito em invoice → New → Package - Digite: controller e pressione Enter - Repita os passos 2-3 para criar: service model repository - Controller: Recebe as requisiçÔes HTTP (ex: POST /invoices) - Service: ContĂ©m as regras de negĂłcio (ex: calcular juros) - Model: Define estruturas de dados (ex: classe Invoice) - Repository: Conversa com banco de dados - Localize: src/main/resources/application.properties - Clique com botĂŁo direito → Refactor → Rename - Renomeie para: application.yml - server.port: 8080 - A aplicação rodarĂĄ em http://localhost:8080 - spring.application.name - Nome da aplicação (Ăștil em logs) - logging.level - Mostra logs detalhados do seu cĂłdigo (Ăștil para debug) - Abra o arquivo InvoiceServiceApplication.kt - VocĂȘ verĂĄ um cĂłdigo assim: - Clique no Ă­cone ▶ verde ao lado de fun main - Selecione Run 'InvoiceServiceApplication' - Abra seu navegador - Acesse: http://localhost:8080 - VocĂȘ verĂĄ uma pĂĄgina de erro "Whitelabel Error Page" - [ ] Projeto gerado com Java 17+ - [ ] Linguagem: Kotlin - [ ] DependĂȘncias: Spring Web e Spring DevTools - [ ] Projeto baixado e descompactado - [ ] Projeto importado no IntelliJ - [ ] Pacote controller criado - [ ] Pacote service criado - [ ] Pacote model criado - [ ] Pacote repository criado - [ ] Arquivo .properties renomeado para .yml - [ ] Porta configurada: 8080 - [ ] Nome da aplicação definido - [ ] NĂ­vel de log configurado - [ ] Aplicação compila sem erros - [ ] Console mostra "Started InvoiceServiceApplication" - [ ] http://localhost:8080 retorna pĂĄgina de erro do Spring (esperado!) - No IntelliJ: File → Project Structure → Project - Configure SDK para Java 17 - Em Language Level, selecione 17 - Sealed types, always-strict floating-point... - No terminal: lsof -i :8080 (veja qual processo estĂĄ usando) - Mate o processo ou mude a porta no application.yml para 8081 - No terminal, dentro da pasta do projeto: - File → Settings → Plugins - Procure por "Kotlin" - Clique em Install - Reinicie o IntelliJ - POST /invoices - Cria uma nova fatura - GET /invoices/123 - Busca a fatura de ID 123 - Baixa bibliotecas (dependĂȘncias) que seu projeto precisa - Compila seu cĂłdigo - Empacota tudo em um arquivo .jar executĂĄvel