diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml index b2099fb2a..e15a67296 100644 --- a/.github/workflows/maven-build.yml +++ b/.github/workflows/maven-build.yml @@ -13,13 +13,16 @@ jobs: build: runs-on: ubuntu-latest + strategy: + matrix: + java: [ '17' ] steps: - uses: actions/checkout@v2 - - name: Set up JDK 11 + - name: Set up JDK ${{matrix.java}} uses: actions/setup-java@v2 with: - java-version: '11' + java-version: ${{matrix.java}} distribution: 'adopt' cache: maven - name: Build with Maven diff --git a/README.md b/README.md index a226b1027..60dd832b2 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ After starting services, it takes a while for API Gateway to be in sync with ser so don't be scared of initial Spring Cloud Gateway timeouts. You can track services availability using Eureka dashboard available by default at http://localhost:8761. -The `master` branch uses an Alpine linux with JRE 8 as Docker base. You will find a Java 11 version in the `release/java11` branch. +The `master` branch uses an Eclipse Temurin with Java 17 as Docker base image. *NOTE: Under MacOSX or Windows, make sure that the Docker VM has enough memory to run the microservices. The default settings are usually not enough and make the `docker-compose up` painfully slow.* diff --git a/docker/Dockerfile b/docker/Dockerfile index 959770892..be157c33f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:11-jre as builder +FROM eclipse-temurin:17 as builder WORKDIR application ARG ARTIFACT_NAME COPY ${ARTIFACT_NAME}.jar application.jar @@ -11,8 +11,7 @@ RUN tar xzf dockerize.tar.gz RUN chmod +x dockerize -# wget is not installed on adoptopenjdk:11-jre-hotspot -FROM adoptopenjdk:11-jre-hotspot +FROM eclipse-temurin:17 WORKDIR application diff --git a/docker/grafana/dashboards/grafana-petclinic-dashboard.json b/docker/grafana/dashboards/grafana-petclinic-dashboard.json index ccd51d1bf..90bbeb7d6 100644 --- a/docker/grafana/dashboards/grafana-petclinic-dashboard.json +++ b/docker/grafana/dashboards/grafana-petclinic-dashboard.json @@ -283,7 +283,7 @@ "tableColumn": "", "targets": [ { - "expr": "sum(petclinic_owner_seconds_count{method=\"PUT\", status=\"204\"})", + "expr": "sum(petclinic_owner_seconds_count{method=\"updateOwner\", exception=\"none\"})", "format": "time_series", "instant": true, "intervalFactor": 1, @@ -364,7 +364,7 @@ "tableColumn": "", "targets": [ { - "expr": "sum(petclinic_owner_seconds_count{method=\"POST\", status=\"201\"})", + "expr": "sum(petclinic_owner_seconds_count{method=\"createOwner\", exception=\"none\"})", "format": "time_series", "instant": true, "intervalFactor": 1, @@ -446,7 +446,7 @@ "tableColumn": "", "targets": [ { - "expr": "sum(petclinic_pet_seconds_count{method=\"POST\", status=\"201\"})", + "expr": "sum(petclinic_pet_seconds_count{method=\"processCreationForm\", exception=\"none\"})", "format": "time_series", "instant": true, "intervalFactor": 1, @@ -528,7 +528,7 @@ "tableColumn": "Value", "targets": [ { - "expr": "sum(petclinic_visit_seconds_count{method=\"POST\", status=\"201\"})", + "expr": "sum(petclinic_visit_seconds_count{method=\"read\", exception=\"none\"})", "format": "time_series", "instant": true, "intervalFactor": 1, @@ -590,7 +590,7 @@ "steppedLine": false, "targets": [ { - "expr": "sum(petclinic_owner_seconds_count{method=\"POST\", status=\"201\"})", + "expr": "sum(petclinic_owner_seconds_count{method=\"createOwner\", exception=\"none\"})", "format": "time_series", "instant": false, "intervalFactor": 1, @@ -598,21 +598,21 @@ "refId": "A" }, { - "expr": "sum(petclinic_pet_seconds_count{method=\"POST\", status=\"201\"})", + "expr": "sum(petclinic_pet_seconds_count{method=\"processCreationForm\", exception=\"none\"})", "format": "time_series", "intervalFactor": 1, "legendFormat": "pet create", "refId": "B" }, { - "expr": "sum(petclinic_visit_seconds_count{method=\"POST\", status=\"201\"})", + "expr": "sum(petclinic_visit_seconds_count{method=\"create\", exception=\"none\"})", "format": "time_series", "intervalFactor": 1, "legendFormat": "visit create", "refId": "C" }, { - "expr": "sum(petclinic_owner_seconds_count{method=\"PUT\", status=\"204\"})", + "expr": "sum(petclinic_owner_seconds_count{method=\"updateOwner\", exception=\"none\"})", "format": "time_series", "intervalFactor": 1, "legendFormat": "owner update", diff --git a/pom.xml b/pom.xml index 95cb2481d..585231af6 100644 --- a/pom.xml +++ b/pom.xml @@ -6,12 +6,12 @@ org.springframework.boot spring-boot-starter-parent - 2.6.7 + 3.0.1 org.springframework.samples spring-petclinic-microservices - 2.6.7 + 3.0.1 ${project.artifactId} pom @@ -26,12 +26,12 @@ - 1.8 + 17 3.17.1 - 2.6.0 - 2021.0.2 + 2022.0.0 2.3.10 + 1.7.1 springcommunity 9090 @@ -54,6 +54,11 @@ chaos-monkey-spring-boot ${chaos-monkey-spring-boot.version} + + org.jolokia + jolokia-core + ${jolokia-core.version} + org.assertj assertj-core @@ -97,8 +102,8 @@ - pl.project13.maven - git-commit-id-plugin + io.github.git-commit-id + git-commit-id-maven-plugin diff --git a/spring-petclinic-admin-server/pom.xml b/spring-petclinic-admin-server/pom.xml index e56d0d4ae..3f1da4c61 100644 --- a/spring-petclinic-admin-server/pom.xml +++ b/spring-petclinic-admin-server/pom.xml @@ -12,11 +12,11 @@ org.springframework.samples spring-petclinic-microservices - 2.6.7 + 3.0.1 - 2.5.4 + 3.0.0-M8 9090 ${basedir}/../docker diff --git a/spring-petclinic-api-gateway/pom.xml b/spring-petclinic-api-gateway/pom.xml index 84c7d9f87..c18d7ccd6 100644 --- a/spring-petclinic-api-gateway/pom.xml +++ b/spring-petclinic-api-gateway/pom.xml @@ -11,7 +11,7 @@ org.springframework.samples spring-petclinic-microservices - 2.6.7 + 3.0.1 @@ -47,10 +47,6 @@ - - org.springframework.cloud - spring-cloud-sleuth-zipkin - org.springframework.cloud spring-cloud-starter-circuitbreaker-reactor-resilience4j @@ -63,10 +59,6 @@ org.springframework.cloud spring-cloud-starter-netflix-eureka-client - - org.springframework.cloud - spring-cloud-starter-sleuth - org.springframework.cloud spring-cloud-starter-gateway @@ -90,6 +82,10 @@ io.github.resilience4j resilience4j-micrometer + + io.opentelemetry + opentelemetry-exporter-zipkin + diff --git a/spring-petclinic-config-server/pom.xml b/spring-petclinic-config-server/pom.xml index f2c3c963c..c2693b700 100644 --- a/spring-petclinic-config-server/pom.xml +++ b/spring-petclinic-config-server/pom.xml @@ -11,7 +11,7 @@ org.springframework.samples spring-petclinic-microservices - 2.6.7 + 3.0.1 diff --git a/spring-petclinic-customers-service/pom.xml b/spring-petclinic-customers-service/pom.xml index 5435bb014..78737bf16 100644 --- a/spring-petclinic-customers-service/pom.xml +++ b/spring-petclinic-customers-service/pom.xml @@ -11,7 +11,7 @@ org.springframework.samples spring-petclinic-microservices - 2.6.7 + 3.0.1 @@ -49,19 +49,11 @@ org.springframework.cloud spring-cloud-starter-netflix-eureka-client - - org.springframework.cloud - spring-cloud-starter-sleuth - - - org.springframework.cloud - spring-cloud-sleuth-zipkin - - mysql - mysql-connector-java + com.mysql + mysql-connector-j runtime @@ -86,6 +78,10 @@ de.codecentric chaos-monkey-spring-boot + + io.opentelemetry + opentelemetry-exporter-zipkin + diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/config/MetricConfig.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/config/MetricConfig.java new file mode 100644 index 000000000..fb2acaf2d --- /dev/null +++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/config/MetricConfig.java @@ -0,0 +1,22 @@ +package org.springframework.samples.petclinic.customers.config; + +import io.micrometer.core.aop.TimedAspect; +import io.micrometer.core.instrument.MeterRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MetricConfig { + + @Bean + MeterRegistryCustomizer metricsCommonTags() { + return registry -> registry.config().commonTags("application", "petclinic"); + } + + @Bean + TimedAspect timedAspect(MeterRegistry registry) { + return new TimedAspect(registry); + } + +} diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Owner.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Owner.java index 88860faa4..4c46ab368 100644 --- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Owner.java +++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Owner.java @@ -21,17 +21,17 @@ import java.util.List; import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.OneToMany; -import javax.persistence.Table; -import javax.validation.constraints.Digits; -import javax.validation.constraints.NotBlank; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import jakarta.validation.constraints.Digits; +import jakarta.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Pet.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Pet.java index b89924f0d..2cb702c88 100644 --- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Pet.java +++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Pet.java @@ -17,16 +17,16 @@ import java.util.Date; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/PetType.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/PetType.java index 3a7162fda..80a29c134 100644 --- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/PetType.java +++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/PetType.java @@ -18,12 +18,12 @@ import lombok.Getter; import lombok.Setter; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; /** * @author Juergen Hoeller diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/OwnerResource.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/OwnerResource.java index b867f1aa2..72c375a45 100644 --- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/OwnerResource.java +++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/OwnerResource.java @@ -23,8 +23,8 @@ import org.springframework.samples.petclinic.customers.model.OwnerRepository; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import javax.validation.constraints.Min; +import jakarta.validation.Valid; +import jakarta.validation.constraints.Min; import java.util.List; import java.util.Optional; diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetRequest.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetRequest.java index b2e265316..a4ea32222 100644 --- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetRequest.java +++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetRequest.java @@ -19,7 +19,7 @@ import java.util.Date; -import javax.validation.constraints.Size; +import jakarta.validation.constraints.Size; import com.fasterxml.jackson.annotation.JsonFormat; diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetResource.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetResource.java index 7ec597a4b..9b1bb9e2f 100644 --- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetResource.java +++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetResource.java @@ -22,7 +22,7 @@ import org.springframework.samples.petclinic.customers.model.*; import org.springframework.web.bind.annotation.*; -import javax.validation.constraints.Min; +import jakarta.validation.constraints.Min; import java.util.List; import java.util.Optional; diff --git a/spring-petclinic-discovery-server/pom.xml b/spring-petclinic-discovery-server/pom.xml index c81faf4f8..e78fdec8e 100644 --- a/spring-petclinic-discovery-server/pom.xml +++ b/spring-petclinic-discovery-server/pom.xml @@ -11,7 +11,7 @@ org.springframework.samples spring-petclinic-microservices - 2.6.7 + 3.0.1 diff --git a/spring-petclinic-vets-service/pom.xml b/spring-petclinic-vets-service/pom.xml index 26fa5779c..e137c3614 100644 --- a/spring-petclinic-vets-service/pom.xml +++ b/spring-petclinic-vets-service/pom.xml @@ -11,7 +11,7 @@ org.springframework.samples spring-petclinic-microservices - 2.6.7 + 3.0.1 @@ -49,10 +49,6 @@ - - org.springframework.cloud - spring-cloud-sleuth-zipkin - org.springframework.cloud spring-cloud-starter-config @@ -61,10 +57,6 @@ org.springframework.cloud spring-cloud-starter-netflix-eureka-client - - org.springframework.cloud - spring-cloud-starter-sleuth - @@ -77,8 +69,12 @@ cache-api - org.ehcache - ehcache + jakarta.xml.bind + jakarta.xml.bind-api + + + com.github.ben-manes.caffeine + caffeine org.jolokia @@ -90,8 +86,8 @@ runtime - mysql - mysql-connector-java + com.mysql + mysql-connector-j runtime @@ -102,6 +98,10 @@ de.codecentric chaos-monkey-spring-boot + + io.opentelemetry + opentelemetry-exporter-zipkin + diff --git a/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Specialty.java b/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Specialty.java index c5c0869c6..529b5a496 100644 --- a/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Specialty.java +++ b/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Specialty.java @@ -18,12 +18,12 @@ import lombok.Getter; import lombok.Setter; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; /** * Models a {@link Vet Vet's} specialty (for example, dentistry). diff --git a/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Vet.java b/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Vet.java index 4976a39bc..2cec7f89d 100644 --- a/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Vet.java +++ b/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Vet.java @@ -21,18 +21,18 @@ import java.util.List; import java.util.Set; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.Table; -import javax.validation.constraints.NotBlank; -import javax.xml.bind.annotation.XmlElement; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.Table; +import jakarta.validation.constraints.NotBlank; +import jakarta.xml.bind.annotation.XmlElement; import lombok.Getter; import lombok.Setter; diff --git a/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/web/VetResource.java b/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/web/VetResource.java index 7e0a57481..eb5116663 100644 --- a/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/web/VetResource.java +++ b/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/web/VetResource.java @@ -19,6 +19,7 @@ import java.util.List; +import org.springframework.cache.annotation.Cacheable; import org.springframework.samples.petclinic.vets.model.Vet; import org.springframework.samples.petclinic.vets.model.VetRepository; import org.springframework.web.bind.annotation.GetMapping; @@ -40,6 +41,7 @@ class VetResource { private final VetRepository vetRepository; @GetMapping + @Cacheable("vets") public List showResourcesVetList() { return vetRepository.findAll(); } diff --git a/spring-petclinic-visits-service/pom.xml b/spring-petclinic-visits-service/pom.xml index 949d1bb62..69421cbe5 100644 --- a/spring-petclinic-visits-service/pom.xml +++ b/spring-petclinic-visits-service/pom.xml @@ -11,7 +11,7 @@ org.springframework.samples spring-petclinic-microservices - 2.6.7 + 3.0.1 @@ -48,14 +48,6 @@ org.springframework.cloud spring-cloud-starter-netflix-eureka-client - - org.springframework.cloud - spring-cloud-starter-sleuth - - - org.springframework.cloud - spring-cloud-sleuth-zipkin - @@ -73,8 +65,8 @@ jolokia-core - mysql - mysql-connector-java + com.mysql + mysql-connector-j runtime @@ -85,6 +77,10 @@ de.codecentric chaos-monkey-spring-boot + + io.opentelemetry + opentelemetry-exporter-zipkin + diff --git a/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/config/MetricConfig.java b/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/config/MetricConfig.java new file mode 100644 index 000000000..35e81f0af --- /dev/null +++ b/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/config/MetricConfig.java @@ -0,0 +1,22 @@ +package org.springframework.samples.petclinic.visits.config; + +import io.micrometer.core.aop.TimedAspect; +import io.micrometer.core.instrument.MeterRegistry; +import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MetricConfig { + + @Bean + MeterRegistryCustomizer metricsCommonTags() { + return registry -> registry.config().commonTags("application", "petclinic"); + } + + @Bean + TimedAspect timedAspect(MeterRegistry registry) { + return new TimedAspect(registry); + } + +} diff --git a/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/model/Visit.java b/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/model/Visit.java index deede8eed..ba24c1ce7 100644 --- a/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/model/Visit.java +++ b/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/model/Visit.java @@ -21,15 +21,15 @@ import lombok.Data; import lombok.NoArgsConstructor; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Temporal; -import javax.persistence.TemporalType; -import javax.validation.constraints.Size; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import jakarta.validation.constraints.Size; import java.util.Date; /** diff --git a/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/web/VisitResource.java b/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/web/VisitResource.java index ab940b5bc..1115dd7c0 100644 --- a/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/web/VisitResource.java +++ b/spring-petclinic-visits-service/src/main/java/org/springframework/samples/petclinic/visits/web/VisitResource.java @@ -16,8 +16,8 @@ package org.springframework.samples.petclinic.visits.web; import java.util.List; -import javax.validation.Valid; -import javax.validation.constraints.Min; +import jakarta.validation.Valid; +import jakarta.validation.constraints.Min; import io.micrometer.core.annotation.Timed; import lombok.RequiredArgsConstructor; @@ -62,12 +62,12 @@ public Visit create( } @GetMapping("owners/*/pets/{petId}/visits") - public List visits(@PathVariable("petId") @Min(1) int petId) { + public List read(@PathVariable("petId") @Min(1) int petId) { return visitRepository.findByPetId(petId); } @GetMapping("pets/visits") - public Visits visitsMultiGet(@RequestParam("petId") List petIds) { + public Visits read(@RequestParam("petId") List petIds) { final List byPetIdIn = visitRepository.findByPetIdIn(petIds); return new Visits(byPetIdIn); }