Tworzenie mikrousługi środowiska Spring Boot
W tym module utworzymy mikrousługę spring boot z obsługą chmury. Korzysta z rejestru usług Spring Cloud i serwera Spring Cloud Config Server, które są zarządzane i obsługiwane przez usługę Azure Spring Apps.
Ta mikrousługa używa narzędzia Spring Data JPA do odczytywania i zapisywania danych z bazy danych azure database for MySQL :
- Usługa Azure Spring Apps automatycznie wiąże bazę danych z naszą usługą.
- Azure Database for MySQL to w pełni zarządzana wersja programu MySQL działająca na platformie Azure.
Tworzenie aplikacji w usłudze Azure Spring Apps
Utwórz określoną todo-service
aplikację w wystąpieniu usługi Azure Spring Apps:
az spring app create --name todo-service --resource-group "$RESOURCE_GROUP_NAME" --service "$SPRING_CLOUD_NAME" --runtime-version Java_17
Tworzenie bazy danych MySQL
Teraz utwórz usługę 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"
Ta operacja może potrwać kilka minut, a dane wyjściowe dokumentu JSON: skopiuj atrybut hasła w tym dokumencie, ponieważ użyjemy go później.
Teraz utwórz bazę danych todos na tym serwerze i otwórz zaporę, aby usługa Azure Spring Apps mogła uzyskać do niej dostęp:
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 zakończeniu tej operacji możesz zapoznać się z tym, co zostało utworzone w grupie zasobów powstałej w trakcie tych warsztatów.
Tworzenie powiązania bazy danych MySQL z aplikacją
Usługa Azure Spring Apps może automatycznie powiązać bazę danych MySQL utworzoną z naszą mikrousługą.
Przejdź do wystąpienia usługi Azure Spring Apps.
Wybierz Aplikacje.
Wybierz aplikację todo-service.
Wybierz pozycję Łącznik usługi, a następnie wybierz pozycję + Utwórz.
- W polu Typ usługi wybierz pozycję DB for MySQL single server (Baza danych dla pojedynczego serwera MySQL).
- Określ nazwę połączenia, na przykład mysql_todos.
- Sprawdź, czy jest wyświetlana poprawna subskrypcja.
- Wybierz serwer MySQL utworzony w poprzednich krokach.
- Wybierz utworzoną wcześniej bazę danych MySQL.
- Wybierz pozycję SpringBoot jako typ klienta.
- Wybierz przycisk Dalej: Uwierzytelnianie.
Na stronie Uwierzytelnianie sprawdź, czy wybrano parametry połączenia.
Wybierz pozycję Kontynuuj z... Poświadczenia bazy danych i wypełnij pola nazwy użytkownika i hasła. Nazwa użytkownika to "spring", a hasło to atrybut hasła skopiowany wcześniej.
Uwaga
Jeśli zapomnisz hasło, możesz je zresetować przy użyciu polecenia
az mysql server update -n ${SPRING_CLOUD_NAME}-mysql -g "$RESOURCE_GROUP_NAME" -p <new-password>
Sprawdź, czy wybrano pozycję Skonfiguruj reguły zapory, aby włączyć dostęp do usługi docelowej.
Kliknij pozycję Dalej: Przejrzyj i utwórz.
Po pojawieniu się komunikatu Weryfikacja przekazana wybierz przycisk Utwórz , aby utworzyć łącznik usługi.
Tworzenie mikrousługi środowiska Spring Boot
Teraz, gdy aprowizowaliśmy wystąpienie usługi Azure Spring Apps i skonfigurowaliśmy powiązanie usługi, pobierzmy kod do todo-service
przygotowania.
Aby utworzyć naszą mikrousługę, użyjemy polecenia https://start.spring.io w wierszu polecenia:
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 -
Uwaga
Używamy składników Spring Web
, , MySQL Driver
Spring Data JPA
, Eureka Discovery Client
, i Config Client
.
Dodawanie kodu Spring w celu zarządzania danymi przy użyciu repozytorium Spring Data JPA
Obok klasy DemoApplication
utwórz jednostkę 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;
}
}
Następnie utwórz repozytorium Spring Data JPA o nazwie TodoRepository
, aby zarządzać tą jednostką:
package com.example.demo;
import org.springframework.data.jpa.repository.JpaRepository;
public interface TodoRepository extends JpaRepository<Todo, Long> {
}
Zakończ tworzenie kodu tej aplikacji, dodając kontroler Spring MVC o nazwie 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();
}
}
Konfigurowanie platformy Spring Boot na potrzeby tworzenia tabel bazy danych
Aby automatycznie generować tabele bazy danych podczas wdrażania aplikacji, dodaj ten wiersz do pliku konfiguracji src/main/resources/application.properties
:
spring.jpa.hibernate.ddl-auto=create-drop
Wdrażanie aplikacji
Teraz możesz skompilować projekt zadań do wykonania i wysłać go do usługi 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 ..
Jeśli chcesz sprawdzić dzienniki aplikacji w przypadku niepowodzenia, możesz użyć polecenia az spring app logs
:
az spring app logs --name todo-service --service "$SPRING_CLOUD_NAME" --resource-group "$RESOURCE_GROUP_NAME" -f
Testowanie projektu w chmurze
Teraz, gdy aplikacja jest wdrożona, czas na jej przetestowanie.
- W witrynie Azure Portal przejdź do pozycji Aplikacje w wystąpieniu usługi Azure Spring Apps.
- Sprawdź, czy usługa todo-service ma stan rejestracji z informacją 0/1. Te informacje pokazują, że jest on poprawnie zarejestrowany w rejestrze usług Spring Cloud.
- Wybierz pozycję todo-service, aby uzyskać więcej informacji na temat mikrousługi.
- Skopiuj/wklej podany element „Testowy punkt końcowy”.
Teraz możesz użyć narzędzia cURL do przetestowania punktu końcowego. Polecenie do testowania powinno wyglądać następująco:
curl https://primary:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX@azure-spring-cloud-workshop.test.azuremicroservices.io/todo-service/default/
Wynikiem tego polecenia powinny być natomiast trzy elementy, które zostały wcześniej wstawione do bazy danych MySQL:
[{"id":"1","description":"First item","done":true},{"id":"2","description":"Second item","done":true},{"id":"3","description":"Third item","done":false}]