Vytvoření mikroslužby Spring Boot

Dokončeno

V tomto modulu vytvoříme mikroslužbu Spring Boot s podporou cloudu. Používá registr služby Spring Cloud a Spring Cloud Config Server, které jsou spravované i podporované službou Azure Spring Apps.

Tato mikroslužba používá Spring Data JPA ke čtení a zápisu dat z databáze Azure Database for MySQL :

  • Azure Spring Apps automaticky vytvoří vazbu této databáze k naší službě.
  • Azure Database for MySQL je plně spravovaná verze MySQL provozovaná v Azure.

Vytvoření aplikace v Azure Spring Apps

Vytvořte v instanci Azure Spring Apps konkrétní todo-service aplikaci:

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

Vytvoření databáze MySQL

Teď vytvořte Azure Database for 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"

Tato operace může trvat několik minut a výstup dokumentu JSON: zkopíruje atribut hesla v tomto dokumentu, protože ho použijeme později.

Teď vytvořte databázi todos na daném serveru a otevřete její bránu firewall, aby k ní služba Azure Spring Apps přistupovala:

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"

Po dokončení této operace se můžete podívat, co jste v tomto workshopu vytvořili ve skupině prostředků.

Svázání databáze MySQL s aplikací

Azure Spring Apps může automaticky svázat databázi MySQL, kterou jsme vytvořili, s naší mikroslužbou.

  1. Přejděte do vaší instance Azure Spring Apps.

  2. Zvolte Aplikace.

  3. Vyberte aplikaci todo-service.

  4. Vyberte Konektor služby a pak zvolte + Vytvořit.

    1. Jako typ služby vyberte databázi pro jednoúčelový server MySQL.
    2. Zadejte název připojení, například mysql_todos.
    3. Ověřte, že se zobrazí správné předplatné.
    4. Zvolte server MySQL vytvořený v předchozích krocích.
    5. Vyberte dříve vytvořenou databázi MySQL.
    6. Jako typ klienta vyberte SpringBoot .
    7. Vyberte tlačítko Další: Ověřování.
  5. Na stránce Ověřování ověřte, že je vybraný připojovací řetězec.

  6. Vyberte Pokračovat s... Přihlašovací údaje databáze a vyplňte pole uživatelského jména a hesla. Uživatelské jméno je "spring" a heslo je atribut hesla, který jsme zkopírovali dříve.

    Poznámka:

    Pokud heslo zapomenete, můžete ho resetovat pomocí az mysql server update -n ${SPRING_CLOUD_NAME}-mysql -g "$RESOURCE_GROUP_NAME" -p <new-password>

  7. Ověřte, že je vybrána možnost Konfigurovat pravidla brány firewall pro povolení přístupu k cílové službě .

  8. Klikněte na Další: Zkontrolovat a vytvořit.

  9. Jakmile se zobrazí zpráva o úspěšném ověření, vyberte tlačítko Vytvořit a vytvořte konektor služby.

Vytvoření mikroslužby Spring Boot

Teď, když jsme zřídili instanci Azure Spring Apps a nakonfigurovali vazbu služby, pojďme připravit kód todo-service .

K vytvoření naší mikroslužby použijeme https://start.spring.io s příkazovým řádkem:

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 -

Poznámka:

Používáme Spring Webkomponenty , MySQL Driver, Spring Data JPAEureka Discovery Clienta Config Client komponenty.

Přidání kódu Spring pro správu dat pomocí Spring Data JPA

Vedle třídy DemoApplication vytvořte entitu JPA Todo:

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

Pak vytvořte úložiště Spring Data JPA určené ke správě této entity a pojmenujte ho TodoRepository:

package com.example.demo;

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

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

Dokončete kód této aplikace tím, že přidáte kontroler Spring MVC s názvem 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();
    }
}

Konfigurace Spring Boot pro vytváření databázových tabulek

Abyste při nasazení aplikace mohli automaticky generovat databázové tabulky, přidejte do konfiguračního souboru src/main/resources/application.properties tento řádek:

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

Nasazení aplikace

Teď můžete vytvořit projekt todo-service a odeslat ho do 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 ..

Pokud potřebujete zkontrolovat protokoly aplikace kvůli nějaké poruše, použijte příkaz az spring app logs:

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

Testování projektu v cloudu

Když je aplikace nasazená, je čas ji otestovat.

  1. Na webu Azure Portal přejděte na Aplikace ve vaší instanci Azure Spring Apps.
    1. Ověřte , že služba todo má stav registrace s informací 0/1. Tyto informace ukazují, že je správně zaregistrovaná v registru služby Spring Cloud.
    2. Další informace o mikroslužbě získáte, když vyberete todo-service.
  2. Zkopírujte a vložte poskytnutý testovací koncový bod.

Teď můžete k testování koncového bodu použít cURL. Testovací příkaz by měl vypadat takto:

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

Tento příkaz by měl vrátit tři položky, které byly původně vložené do databáze MySQL:

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