Spring Boot-mikroszolgáltatás létrehozása

Befejeződött

Ebben a modulban létrehozunk egy felhőalapú Spring Boot-mikroszolgáltatást. Egy Spring Cloud-szolgáltatásregisztrációs adatbázist és egy Spring Cloud Config-kiszolgálót használ, amelyet az Azure Spring Apps felügyel és támogat.

Ez a mikroszolgáltatás a Spring Data JPA-t használja adatok olvasására és írására egy Azure-adatbázisból mySQL-adatbázisból :

  • Az Azure Spring Apps automatikusan összekapcsolja az adatbázist a szolgáltatásunkkal.
  • Az Azure database for MySQL a MySQL egy teljes mértékben felügyelt, Azure-on futó verziója.

Az alkalmazás létrehozása az Azure Spring Appsben

Hozzon létre egy adott todo-service alkalmazást az Azure Spring Apps-példányban:

az spring app create --name todo-service --resource-group "$RESOURCE_GROUP_NAME" --service "$SPRING_CLOUD_NAME" --runtime-version Java_17

MySQL-adatbázis létrehozása

Hozzon létre egy Azure Database for MySQL-t:

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"

Ez a művelet eltarthat néhány percig, és JSON-dokumentumot ad ki: másolja a jelszóattribútumot a dokumentumba, ahogy később használni fogjuk.

Most hozzon létre egy todos-adatbázist a kiszolgálón, és nyissa meg a tűzfalát, hogy az Azure Spring Apps hozzáférhessen:

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"

A művelet elvégzése után megtekintheti a workshophoz létrehozott erőforráscsoportban létrehozott elemeket.

A MySQL-adatbázis alkalmazáshoz kötése

Az Azure Spring Apps automatikusan összekapcsolhatja a létrehozott MySQL-adatbázist a mikroszolgáltatásunkkal.

  1. Lépjen az Azure Spring Apps-példányra.

  2. Válassza az Alkalmazások lehetőséget.

  3. Válassza ki a todo-service alkalmazást.

  4. Válassza a Szolgáltatás Csatlakozás or lehetőséget, majd a + Létrehozás lehetőséget.

    1. Szolgáltatástípus esetén válassza az önálló MySQL-kiszolgáló adatbázisát.
    2. Adjon meg egy kapcsolatnevet, például mysql_todos.
    3. Ellenőrizze, hogy a megfelelő előfizetés látható-e.
    4. Válassza ki az előző lépésekben létrehozott MySQL-kiszolgálót.
    5. Válassza ki a korábban létrehozott MySQL-adatbázist.
    6. Válassza a SpringBoot lehetőséget ügyféltípusként.
    7. Válassza a Tovább: Hitelesítés gombot.
  5. A Hitelesítés lapon ellenőrizze, hogy Csatlakozás ion sztring van-e kiválasztva.

  6. Válassza a Folytatás elemet... Adatbázis hitelesítő adatai , és adja meg a felhasználónév és a jelszó mezőket. A felhasználónév "spring", a jelszó pedig a korábban másolt jelszóattribútum.

    Megjegyzés:

    Ha elfelejti a jelszavát, a jelszó alaphelyzetbe állításához használja a az mysql server update -n ${SPRING_CLOUD_NAME}-mysql -g "$RESOURCE_GROUP_NAME" -p <new-password>

  7. Ellenőrizze, hogy a tűzfalszabályok konfigurálása a célszolgáltatáshoz való hozzáférés engedélyezéséhez be van-e jelölve.

  8. Kattintson a Tovább gombra : Véleményezés + Létrehozás.

  9. Miután megjelenik az Ellenőrzés átadott üzenet, válassza a Létrehozás gombot a Szolgáltatás Csatlakozás or létrehozásához.

Spring Boot-mikroszolgáltatás létrehozása

Most, hogy kiépítettük az Azure Spring Apps-példányt, és konfiguráltuk a szolgáltatáskötést, szerezzük be a kódot.todo-service

A mikroszolgáltatás létrehozásához a következő parancssort fogjuk használni https://start.spring.io :

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 -

Megjegyzés:

A , , Spring Data JPAMySQL Driver, Eureka Discovery Clientés az Config Client összetevőket használjukSpring Web.

Spring-kód hozzáadása az adatkezeléshez a Spring Data JPA segítségével

A DemoApplication osztály mellett hozzon létre egy új Todo JPA-entitást:

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;
    }
}

Ezután hozzon létre egy TodoRepository nevű Spring Data JPA-adattárat az entitás kezeléséhez:

package com.example.demo;

import org.springframework.data.jpa.repository.JpaRepository;

public interface TodoRepository extends JpaRepository<Todo, Long> {
}

Az alkalmazás kódolását egy TodoController nevű Spring MVC-vezérlő hozzáadásával zárja le:

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();
    }
}

A Spring Boot konfigurálása az adatbázistáblák létrehozásához

Ahhoz, hogy az alkalmazás üzembe helyezésekor automatikusan létrejöjjenek az adatbázistáblák, adja hozzá az alábbi sort az src/main/resources/application.properties konfigurációs fájlhoz:

spring.jpa.hibernate.ddl-auto=create-drop

Az alkalmazás üzembe helyezése

Most már létrehozhatja a todo-service projektet, és elküldheti az Azure Spring Appsbe:

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 ..

Ha ellenőrizni szeretné az alkalmazás naplóit, használja az az spring app logs parancsot:

az spring app logs --name todo-service --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" -f

A projekt tesztelése a felhőben

Most, hogy üzembe helyezte az alkalmazást, ideje tesztelni.

  1. Az Azure Portalon nyissa meg az Azure Spring Apps-példány alkalmazásait .
    1. Ellenőrizze, hogy a todo-service 0/1 regisztrációs állapotú-e. Ezek az információk azt mutatják, hogy helyesen van regisztrálva a Spring Cloud szolgáltatásregisztrációs adatbázisában.
    2. A mikroszolgáltatásról a todo-service lehetőség kiválasztásával kaphat további információt.
  2. Másolja és illessze be a megadott „tesztvégpontot”.

A cURL segítségével most tesztelheti a végpontot. A tesztparancsnak a következőhöz hasonlóan kell kinéznie:

curl https://primary:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX@azure-spring-cloud-workshop.test.azuremicroservices.io/todo-service/default/

A parancsnak azt a három elemet kell eredményeznie, amelyeket a korábban beillesztett a MySQL-adatbázisba:

[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]

Tesztelje tudását

1.

Ha Spring Boot-mikroszolgáltatást szeretne üzembe helyezni az Azure Spring Appsben, mit kell módosítania az alkalmazásban?

2.

Alapértelmezés szerint hogyan érheti el a mikroszolgáltatást az üzembe helyezés után?