Byg en spring Boot-mikrotjeneste
- 10 minutter
I dette modul bygger vi en cloudaktiveret spring Boot-mikrotjeneste. Den bruger registreringsdatabasen for Spring Cloud-tjenesten og en Spring Cloud Config Server, som både administreres og understøttes af Azure Spring Apps.
Denne microservice bruger Spring Data JPA til at læse og skrive data fra en Azure-database til MySQL database:
- Azure Spring Apps binder automatisk databasen til vores tjeneste.
- Azure-databasen til MySQL er en fuldt administreret version af MySQL, der kører på Azure.
Opret programmet på Azure Spring Apps
Opret et bestemt todo-service-program i din Forekomst af Azure Spring Apps:
az spring app create --name todo-service --resource-group "$RESOURCE_GROUP_NAME" --service "$SPRING_CLOUD_NAME" --runtime-version Java_17
Opret en MySQL-database
Opret nu en Azure-database til MySQL:
az mysql server create \
--name ${SPRING_CLOUD_NAME}-mysql \
--resource-group "$RESOURCE_GROUP_NAME" \
--sku-name B_Gen5_1 \
--storage-size 5120 \
--admin-user "spring"
Denne handling kan tage et par minutter og udskriver et JSON-dokument: Kopiér attributten adgangskode i dokumentet, som vi bruger det senere.
Opret nu en todos database på den pågældende server, og åbn firewallen, så Azure Spring Apps kan få adgang til den:
az mysql db create \
--name "todos" \
--server-name ${SPRING_CLOUD_NAME}-mysql
az mysql server firewall-rule create \
--name ${SPRING_CLOUD_NAME}-mysql-allow-azure-ip \
--resource-group "$RESOURCE_GROUP_NAME" \
--server ${SPRING_CLOUD_NAME}-mysql \
--start-ip-address "0.0.0.0" \
--end-ip-address "0.0.0.0"
Når denne handling er fuldført, kan du se, hvad der blev oprettet i den ressourcegruppe, du oprettede til denne workshop.
Bind MySQL-databasen til programmet
Azure Spring Apps kan automatisk binde den MySQL-database, vi har oprettet, til vores microservice.
Gå til din Forekomst af Azure Spring Apps.
Vælg Apps.
Vælg programmet todo-service.
Vælg Service Connector, og vælg derefter + Opret.
- For Tjenestetypeskal du vælge DB for MySQL-enkeltserver.
- Angiv et forbindelsesnavn, f.eks. mysql_todos.
- Kontrollér, at det korrekte abonnement vises.
- Vælg den MySQL-server, der er oprettet i de foregående trin.
- Vælg den MySQL-database, der blev oprettet tidligere.
- Vælg SpringBoot som klienttype.
- Vælg knappen Næste: Godkendelse.
På siden Godkendelse skal du kontrollere, at Forbindelsesstreng er valgt.
Vælg Fortsæt med... Databaselegitimationsoplysninger og udfylde felterne brugernavn og adgangskode. Brugernavnet er "spring", og adgangskoden er den adgangskodeattribut, vi kopierede tidligere.
Seddel
Hvis du glemmer din adgangskode, kan du nulstille den ved hjælp af
az mysql server update -n ${SPRING_CLOUD_NAME}-mysql -g "$RESOURCE_GROUP_NAME" -p <new-password>Kontrollér, at Konfigurer firewallregler for at give adgang til destinationstjenesten, er valgt.
Klik på Næste: Gennemse + Opret.
Når meddelelsen Validering er sendt vises, skal du vælge knappen Opret for at oprette serviceconnectoren.
Opret en spring Boot-mikrotjeneste
Nu, hvor vi har klargjort Forekomsten af Azure Spring Apps og konfigureret tjenestebindingen, kan vi gøre koden til todo-service klar.
Hvis du vil oprette vores microservice, bruger vi https://start.spring.io med kommandolinjen:
curl https://start.spring.io/starter.tgz -d type=maven-project -d dependencies=web,mysql,data-jpa,cloud-eureka,cloud-config-client -d baseDir=todo-service -d bootVersion=3.1.5.RELEASE -d javaVersion=17 | tar -xzvf -
Seddel
Vi bruger komponenterne Spring Web, MySQL Driver, Spring Data JPA, Eureka Discovery Clientog Config Client .
Tilføj springkode for at administrere data ved hjælp af JPA for spring data
Ud for klassen DemoApplication skal du oprette et Todo JPA-objekt:
package com.example.demo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Todo {
public Todo() {
}
public Todo(String description, boolean done) {
this.description = description;
this.done = done;
}
@Id
@GeneratedValue
private Long id;
private String description;
private boolean done;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public boolean isDone() {
return done;
}
public void setDone(boolean done) {
this.done = done;
}
}
Opret derefter et JPA-lager for fjederdata for at administrere denne enhed, der kaldes TodoRepository:
package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TodoRepository extends JpaRepository<Todo, Long> {
}
Afslut kodningen af programmet ved at tilføje en Spring MVC-controller med navnet TodoController:
package com.example.demo;
import org.springframework.web.bind.annotation.*;
import javax.annotation.PostConstruct;
import java.util.Arrays;
@RestController
public class TodoController {
private final TodoRepository todoRepository;
public TodoController(TodoRepository todoRepository) {
this.todoRepository = todoRepository;
}
@PostConstruct
public void init() {
todoRepository.saveAll(Arrays.asList(
new Todo("First item", true),
new Todo("Second item", true),
new Todo("Third item", false)));
}
@GetMapping("/")
public Iterable<Todo> getTodos() {
return todoRepository.findAll();
}
}
Konfigurer start af foråret for at oprette databasetabellerne
Hvis du vil generere databasetabellerne automatisk, når programmet installeres, skal du føje denne linje til din src/main/resources/application.properties konfigurationsfil:
spring.jpa.hibernate.ddl-auto=create-drop
Udrul programmet
Du kan nu bygge dit -projekt og sende det til Azure Spring Apps:
cd todo-service
./mvnw clean package -DskipTests
az spring app deploy --name todo-service --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" --artifact-path target/demo-0.0.1-SNAPSHOT.jar
cd ..
Hvis du vil kontrollere programmets logge, kan du bruge kommandoen az spring app logs, hvis noget mislykkes:
az spring app logs --name todo-service --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" -f
Test projektet i cloudmiljøet
Nu, hvor programmet er installeret, er det tid til at teste det!
- På Azure Portal skal du gå til Apps- i din Forekomst af Azure Spring Apps.
- Kontrollér, at todo-service- har en registreringsstatus, hvor der står 0/1. Disse oplysninger viser, at de er korrekt registreret i registreringsdatabasen for Spring Cloud-tjenesten.
- Vælg todo-service- for at få flere oplysninger om mikrotjenesten.
- Kopiér/indsæt det "Testslutpunkt", der er angivet.
Du kan nu bruge cURL til at teste slutpunktet. Din testkommando skal se ud som følger:
curl https://primary:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX@azure-spring-cloud-workshop.test.azuremicroservices.io/todo-service/default/
Og resultatet af denne kommando skal være de tre elementer, der tidligere blev indsat i MySQL-databasen:
[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]