From 2f6ced77f15f645e0a7d2bc4de6ac59e5df47e7c Mon Sep 17 00:00:00 2001 From: Maksym Date: Wed, 1 Feb 2023 12:10:51 +0200 Subject: [PATCH] Support Spring Boot 3 autoconfiguration (#171) * Support Spring Boot 3 autoconfiguration * Upgrade to spring boot 3 * Upgrade to java 17 * Update GitHub Actions to support java 17 * Update tests for Spring Boot 3 * Update GitHub Actions step name to match with Java version --------- Co-authored-by: Maksym Solomkin --- .github/workflows/build.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- pom.xml | 4 ++-- .../aerospike/AerospikeAutoConfiguration.java | 3 ++- .../data/aerospike/AerospikeCommonDataConfiguration.java | 3 ++- .../data/aerospike/AerospikeDataAutoConfiguration.java | 3 ++- .../data/aerospike/AerospikeDataConfiguration.java | 3 ++- .../AerospikeReactiveDataAutoConfiguration.java | 3 ++- .../aerospike/AerospikeReactiveDataConfiguration.java | 3 ++- .../AerospikeReactiveRepositoriesAutoConfiguration.java | 3 ++- .../AerospikeRepositoriesAutoConfiguration.java | 3 ++- ...ramework.boot.autoconfigure.AutoConfiguration.imports | 5 +++++ .../aerospike/AerospikeDataAutoConfigurationTest.java | 4 ++-- .../AerospikeReactiveDataAutoConfigurationTest.java | 7 ++----- .../data/aerospike/AerospikeTestConfigurations.java | 9 +++++---- .../example/reactive/ReactiveIntegrationTest.java | 4 ++-- .../aerospike/example/sync/SyncCustomerRepository.java | 3 ++- .../com/aerospike/example/sync/SyncIntegrationTest.java | 4 ++-- 18 files changed, 42 insertions(+), 30 deletions(-) create mode 100644 spring-boot-autoconfigure-data-aerospike/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0771906..6e46960 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,11 +14,11 @@ jobs: - name: Checkout uses: actions/checkout@v3 - - name: Set up JDK 1.8 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: 8 + java-version: 17 # See: https://github.com/actions/cache/blob/master/examples.md#java---maven - name: Maven cache and restore deps diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ae9eac0..994b5ea 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: 8 + java-version: 17 server-id: ossrh server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD @@ -24,4 +24,4 @@ jobs: run: mvn --batch-mode deploy env: MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} - MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} \ No newline at end of file + MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} diff --git a/pom.xml b/pom.xml index da2b655..8da8623 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.springframework.boot spring-boot-dependencies - 2.7.5 + 3.0.1 com.aerospike @@ -32,7 +32,7 @@ 0.8.1 - 1.8 + 17 ${java.version} ${java.version} UTF-8 diff --git a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/aerospike/AerospikeAutoConfiguration.java b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/aerospike/AerospikeAutoConfiguration.java index dbe1bb9..ad3009b 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/aerospike/AerospikeAutoConfiguration.java +++ b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/aerospike/AerospikeAutoConfiguration.java @@ -30,6 +30,7 @@ import com.aerospike.client.policy.QueryPolicy; import com.aerospike.client.policy.WritePolicy; import com.aerospike.client.reactor.AerospikeReactorClient; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -44,7 +45,7 @@ * * @author Anastasiia Smirnova */ -@Configuration(proxyBeanMethods = false) +@AutoConfiguration @ConditionalOnClass(AerospikeClient.class) @ConditionalOnProperty("spring.aerospike.hosts") @EnableConfigurationProperties(AerospikeProperties.class) diff --git a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeCommonDataConfiguration.java b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeCommonDataConfiguration.java index a0f220a..bab4021 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeCommonDataConfiguration.java +++ b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeCommonDataConfiguration.java @@ -1,6 +1,7 @@ package org.springframework.boot.autoconfigure.data.aerospike; import org.springframework.beans.BeanUtils; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.domain.EntityScanner; import org.springframework.context.ApplicationContext; @@ -23,7 +24,7 @@ import java.util.Collections; -@Configuration(proxyBeanMethods = false) +@AutoConfiguration class AerospikeCommonDataConfiguration { @Bean(name = "aerospikeFilterExpressionsBuilder") diff --git a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataAutoConfiguration.java b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataAutoConfiguration.java index 8e3c600..e6fe3c6 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataAutoConfiguration.java +++ b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataAutoConfiguration.java @@ -18,6 +18,7 @@ import com.aerospike.client.AerospikeClient; import com.aerospike.client.IAerospikeClient; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.aerospike.AerospikeAutoConfiguration; @@ -36,7 +37,7 @@ * @author Igor Ermolenko * @author Anastasiia Smirnova */ -@Configuration(proxyBeanMethods = false) +@AutoConfiguration // match only if we do not have reactive client // we want sync context to be loaded when only sync client is on classpath @ConditionalOnMissingClass("com.aerospike.client.reactor.AerospikeReactorClient") diff --git a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataConfiguration.java b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataConfiguration.java index 8936914..73d174a 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataConfiguration.java +++ b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataConfiguration.java @@ -18,6 +18,7 @@ import com.aerospike.client.IAerospikeClient; import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -42,7 +43,7 @@ * @author Igor Ermolenko * @author Anastasiia Smirnova */ -@Configuration(proxyBeanMethods = false) +@AutoConfiguration class AerospikeDataConfiguration { @Bean(name = "aerospikeTemplate") diff --git a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataAutoConfiguration.java b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataAutoConfiguration.java index 252133c..194206b 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataAutoConfiguration.java +++ b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataAutoConfiguration.java @@ -17,6 +17,7 @@ package org.springframework.boot.autoconfigure.data.aerospike; import com.aerospike.client.reactor.AerospikeReactorClient; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.aerospike.AerospikeAutoConfiguration; @@ -35,7 +36,7 @@ * @author Igor Ermolenko * @author Anastasiia Smirnova */ -@Configuration(proxyBeanMethods = false) +@AutoConfiguration @ConditionalOnClass({AerospikeReactorClient.class, ReactiveAerospikeRepository.class, Flux.class}) @ConditionalOnSingleCandidate(AerospikeReactorClient.class) @ConditionalOnProperty("spring.data.aerospike.namespace") diff --git a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataConfiguration.java b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataConfiguration.java index 161012c..6873f4a 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataConfiguration.java +++ b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataConfiguration.java @@ -18,6 +18,7 @@ import com.aerospike.client.reactor.AerospikeReactorClient; import org.springframework.beans.factory.ObjectProvider; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -42,7 +43,7 @@ * @author Igor Ermolenko * @author Anastasiia Smirnova */ -@Configuration(proxyBeanMethods = false) +@AutoConfiguration class AerospikeReactiveDataConfiguration { @Bean(name = "reactiveAerospikeTemplate") diff --git a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveRepositoriesAutoConfiguration.java b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveRepositoriesAutoConfiguration.java index 1980e0e..ed8e2be 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveRepositoriesAutoConfiguration.java +++ b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveRepositoriesAutoConfiguration.java @@ -17,6 +17,7 @@ package org.springframework.boot.autoconfigure.data.aerospike; import com.aerospike.client.reactor.AerospikeReactorClient; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -33,7 +34,7 @@ * * @author Igor Ermolenko */ -@Configuration(proxyBeanMethods = false) +@AutoConfiguration @ConditionalOnClass({AerospikeReactorClient.class, ReactiveAerospikeRepository.class, Flux.class}) @ConditionalOnRepositoryType(store = "aerospike", type = RepositoryType.REACTIVE) @ConditionalOnMissingBean(ReactiveAerospikeRepositoryFactoryBean.class) diff --git a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeRepositoriesAutoConfiguration.java b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeRepositoriesAutoConfiguration.java index fc2aac0..e60365e 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeRepositoriesAutoConfiguration.java +++ b/spring-boot-autoconfigure-data-aerospike/src/main/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeRepositoriesAutoConfiguration.java @@ -17,6 +17,7 @@ package org.springframework.boot.autoconfigure.data.aerospike; import com.aerospike.client.AerospikeClient; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -32,7 +33,7 @@ * * @author Igor Ermolenko */ -@Configuration(proxyBeanMethods = false) +@AutoConfiguration @ConditionalOnClass({AerospikeClient.class, ReactiveAerospikeRepository.class}) @ConditionalOnRepositoryType(store = "aerospike", type = RepositoryType.IMPERATIVE) @ConditionalOnMissingBean(AerospikeRepositoryFactoryBean.class) diff --git a/spring-boot-autoconfigure-data-aerospike/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-autoconfigure-data-aerospike/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..31a3618 --- /dev/null +++ b/spring-boot-autoconfigure-data-aerospike/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,5 @@ +org.springframework.boot.autoconfigure.aerospike.AerospikeAutoConfiguration +org.springframework.boot.autoconfigure.data.aerospike.AerospikeDataAutoConfiguration +org.springframework.boot.autoconfigure.data.aerospike.AerospikeRepositoriesAutoConfiguration +org.springframework.boot.autoconfigure.data.aerospike.AerospikeReactiveDataAutoConfiguration +org.springframework.boot.autoconfigure.data.aerospike.AerospikeReactiveRepositoriesAutoConfiguration diff --git a/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataAutoConfigurationTest.java b/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataAutoConfigurationTest.java index 2c12713..15f1d67 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataAutoConfigurationTest.java +++ b/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeDataAutoConfigurationTest.java @@ -31,6 +31,7 @@ import org.springframework.data.aerospike.core.AerospikeTemplate; import org.springframework.data.aerospike.core.ReactiveAerospikeTemplate; import org.springframework.data.aerospike.mapping.AerospikeMappingContext; +import org.springframework.data.util.TypeInformation; import org.springframework.test.util.ReflectionTestUtils; import java.util.Set; @@ -72,8 +73,7 @@ public void entityScanShouldSetInitialEntitySet() { .withUserConfiguration(EntityScanConfiguration.class, AerospikeClientMockConfiguration.class) .run(context -> { AerospikeMappingContext mappingContext = context.getBean(AerospikeMappingContext.class); - Set> initialEntitySet = (Set>) ReflectionTestUtils.getField(mappingContext, "initialEntitySet"); - assertThat(initialEntitySet).containsOnly(City.class); + assertThat(mappingContext.getManagedTypes()).containsOnly(TypeInformation.of(City.class)); }); } diff --git a/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataAutoConfigurationTest.java b/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataAutoConfigurationTest.java index ea58c02..339f6ac 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataAutoConfigurationTest.java +++ b/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeReactiveDataAutoConfigurationTest.java @@ -30,9 +30,7 @@ import org.springframework.data.aerospike.core.AerospikeTemplate; import org.springframework.data.aerospike.core.ReactiveAerospikeTemplate; import org.springframework.data.aerospike.mapping.AerospikeMappingContext; -import org.springframework.test.util.ReflectionTestUtils; - -import java.util.Set; +import org.springframework.data.util.TypeInformation; import static org.assertj.core.api.Assertions.assertThat; import static org.springframework.boot.autoconfigure.data.aerospike.TestUtils.getField; @@ -69,8 +67,7 @@ public void entityScanShouldSetInitialEntitySet() { .withUserConfiguration(AerospikeTestConfigurations.EntityScanConfiguration.class, AerospikeClientMockConfiguration.class, MockReactiveIndexRefresher.class) .run(context -> { AerospikeMappingContext mappingContext = context.getBean(AerospikeMappingContext.class); - Set> initialEntitySet = (Set>) ReflectionTestUtils.getField(mappingContext, "initialEntitySet"); - assertThat(initialEntitySet).containsOnly(City.class); + assertThat(mappingContext.getManagedTypes()).containsOnly(TypeInformation.of(City.class)); }); } diff --git a/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeTestConfigurations.java b/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeTestConfigurations.java index 0b05867..c64326d 100644 --- a/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeTestConfigurations.java +++ b/spring-boot-autoconfigure-data-aerospike/src/test/java/org/springframework/boot/autoconfigure/data/aerospike/AerospikeTestConfigurations.java @@ -4,6 +4,7 @@ import com.aerospike.client.cluster.Node; import com.aerospike.client.policy.InfoPolicy; import com.aerospike.client.policy.WritePolicy; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.data.aerospike.city.City; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Bean; @@ -21,7 +22,7 @@ public class AerospikeTestConfigurations { - @Configuration(proxyBeanMethods = false) + @AutoConfiguration public static class AerospikeClientMockConfiguration { @Bean @@ -34,7 +35,7 @@ public IAerospikeClient aerospikeClientMock() { } - @Configuration(proxyBeanMethods = false) + @AutoConfiguration public static class MockReactiveIndexRefresher { @Bean @@ -43,13 +44,13 @@ public ReactorIndexRefresher reactiveAerospikeIndexRefresher() { } } - @Configuration(proxyBeanMethods = false) + @AutoConfiguration @EntityScan("org.springframework.boot.autoconfigure.data.aerospike.city") public static class EntityScanConfiguration { } - @Configuration(proxyBeanMethods = false) + @AutoConfiguration public static class CustomConversionsConfig { @Bean(name = "aerospikeCustomConversions") diff --git a/spring-boot-starter-data-aerospike-example/reactive/src/test/java/com/aerospike/example/reactive/ReactiveIntegrationTest.java b/spring-boot-starter-data-aerospike-example/reactive/src/test/java/com/aerospike/example/reactive/ReactiveIntegrationTest.java index 69db875..f1101eb 100644 --- a/spring-boot-starter-data-aerospike-example/reactive/src/test/java/com/aerospike/example/reactive/ReactiveIntegrationTest.java +++ b/spring-boot-starter-data-aerospike-example/reactive/src/test/java/com/aerospike/example/reactive/ReactiveIntegrationTest.java @@ -9,7 +9,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.boot.test.web.server.LocalServerPort; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.Matchers.hasSize; @@ -91,4 +91,4 @@ void savesAndFindsByLastName() { ; } -} \ No newline at end of file +} diff --git a/spring-boot-starter-data-aerospike-example/sync/src/main/java/com/aerospike/example/sync/SyncCustomerRepository.java b/spring-boot-starter-data-aerospike-example/sync/src/main/java/com/aerospike/example/sync/SyncCustomerRepository.java index e861039..e79cc44 100644 --- a/spring-boot-starter-data-aerospike-example/sync/src/main/java/com/aerospike/example/sync/SyncCustomerRepository.java +++ b/spring-boot-starter-data-aerospike-example/sync/src/main/java/com/aerospike/example/sync/SyncCustomerRepository.java @@ -1,9 +1,10 @@ package com.aerospike.example.sync; import org.springframework.data.aerospike.repository.AerospikeRepository; +import org.springframework.data.repository.CrudRepository; import java.util.List; -public interface SyncCustomerRepository extends AerospikeRepository { +public interface SyncCustomerRepository extends AerospikeRepository, CrudRepository { List findByLastNameOrderByFirstNameAsc(String lastName); } diff --git a/spring-boot-starter-data-aerospike-example/sync/src/test/java/com/aerospike/example/sync/SyncIntegrationTest.java b/spring-boot-starter-data-aerospike-example/sync/src/test/java/com/aerospike/example/sync/SyncIntegrationTest.java index cc64a3e..018d636 100644 --- a/spring-boot-starter-data-aerospike-example/sync/src/test/java/com/aerospike/example/sync/SyncIntegrationTest.java +++ b/spring-boot-starter-data-aerospike-example/sync/src/test/java/com/aerospike/example/sync/SyncIntegrationTest.java @@ -9,7 +9,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.boot.test.web.server.LocalServerPort; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.Matchers.hasSize; @@ -91,4 +91,4 @@ void savesAndFindsByLastName() { ; } -} \ No newline at end of file +}