diff --git a/examples/pom.xml b/examples/pom.xml index 83efd21b9e..ec560863c3 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -173,7 +173,7 @@ repackage - io.dapr.springboot.DaprMainApplication + io.dapr.examples.DaprMainApplication exec dapr-java-sdk-examples diff --git a/examples/src/main/java/io/dapr/springboot/DaprApplication.java b/examples/src/main/java/io/dapr/examples/DaprApplication.java similarity index 74% rename from examples/src/main/java/io/dapr/springboot/DaprApplication.java rename to examples/src/main/java/io/dapr/examples/DaprApplication.java index f97c7bc366..b0623b3d54 100644 --- a/examples/src/main/java/io/dapr/springboot/DaprApplication.java +++ b/examples/src/main/java/io/dapr/examples/DaprApplication.java @@ -3,16 +3,15 @@ * Licensed under the MIT License. */ -package io.dapr.springboot; +package io.dapr.examples; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Dapr's HTTP callback implementation via SpringBoot. - * Scanning package io.dapr.springboot is required. */ -@SpringBootApplication(scanBasePackages = {"io.dapr.springboot", "io.dapr.examples"}) +@SpringBootApplication public class DaprApplication { /** diff --git a/examples/src/main/java/io/dapr/springboot/DaprConfig.java b/examples/src/main/java/io/dapr/examples/DaprConfig.java similarity index 94% rename from examples/src/main/java/io/dapr/springboot/DaprConfig.java rename to examples/src/main/java/io/dapr/examples/DaprConfig.java index 9de4903826..552cefe30d 100644 --- a/examples/src/main/java/io/dapr/springboot/DaprConfig.java +++ b/examples/src/main/java/io/dapr/examples/DaprConfig.java @@ -3,7 +3,7 @@ * Licensed under the MIT License. */ -package io.dapr.springboot; +package io.dapr.examples; import io.dapr.client.DaprClient; import io.dapr.client.DaprClientBuilder; diff --git a/examples/src/main/java/io/dapr/springboot/DaprMainApplication.java b/examples/src/main/java/io/dapr/examples/DaprMainApplication.java similarity index 97% rename from examples/src/main/java/io/dapr/springboot/DaprMainApplication.java rename to examples/src/main/java/io/dapr/examples/DaprMainApplication.java index a9eae7a8bb..7adfafbb5b 100644 --- a/examples/src/main/java/io/dapr/springboot/DaprMainApplication.java +++ b/examples/src/main/java/io/dapr/examples/DaprMainApplication.java @@ -3,7 +3,7 @@ * Licensed under the MIT License. */ -package io.dapr.springboot; +package io.dapr.examples; import java.lang.reflect.Method; import java.util.Arrays; diff --git a/examples/src/main/java/io/dapr/springboot/OpenTelemetryConfig.java b/examples/src/main/java/io/dapr/examples/OpenTelemetryConfig.java similarity index 96% rename from examples/src/main/java/io/dapr/springboot/OpenTelemetryConfig.java rename to examples/src/main/java/io/dapr/examples/OpenTelemetryConfig.java index a607442bf0..e810d48b83 100644 --- a/examples/src/main/java/io/dapr/springboot/OpenTelemetryConfig.java +++ b/examples/src/main/java/io/dapr/examples/OpenTelemetryConfig.java @@ -3,7 +3,7 @@ * Licensed under the MIT License. */ -package io.dapr.springboot; +package io.dapr.examples; import io.dapr.examples.invoke.http.InvokeClient; import io.opentelemetry.api.OpenTelemetry; diff --git a/examples/src/main/java/io/dapr/springboot/OpenTelemetryInterceptor.java b/examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptor.java similarity index 95% rename from examples/src/main/java/io/dapr/springboot/OpenTelemetryInterceptor.java rename to examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptor.java index 002e035e9e..ba11db1fec 100644 --- a/examples/src/main/java/io/dapr/springboot/OpenTelemetryInterceptor.java +++ b/examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptor.java @@ -3,7 +3,7 @@ * Licensed under the MIT License. */ -package io.dapr.springboot; +package io.dapr.examples; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.context.Context; diff --git a/examples/src/main/java/io/dapr/springboot/OpenTelemetryInterceptorConfig.java b/examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptorConfig.java similarity index 92% rename from examples/src/main/java/io/dapr/springboot/OpenTelemetryInterceptorConfig.java rename to examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptorConfig.java index 3c97cc7105..f97cf3ad0a 100644 --- a/examples/src/main/java/io/dapr/springboot/OpenTelemetryInterceptorConfig.java +++ b/examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptorConfig.java @@ -3,7 +3,7 @@ * Licensed under the MIT License. */ -package io.dapr.springboot; +package io.dapr.examples; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/examples/src/main/java/io/dapr/examples/actors/DemoActorService.java b/examples/src/main/java/io/dapr/examples/actors/DemoActorService.java index aeec77e6f7..9b7d3275b9 100644 --- a/examples/src/main/java/io/dapr/examples/actors/DemoActorService.java +++ b/examples/src/main/java/io/dapr/examples/actors/DemoActorService.java @@ -6,7 +6,7 @@ package io.dapr.examples.actors; import io.dapr.actors.runtime.ActorRuntime; -import io.dapr.springboot.DaprApplication; +import io.dapr.examples.DaprApplication; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; diff --git a/examples/src/main/java/io/dapr/examples/bindings/http/InputBindingExample.java b/examples/src/main/java/io/dapr/examples/bindings/http/InputBindingExample.java index bd9ef022b7..8e44637657 100644 --- a/examples/src/main/java/io/dapr/examples/bindings/http/InputBindingExample.java +++ b/examples/src/main/java/io/dapr/examples/bindings/http/InputBindingExample.java @@ -5,7 +5,7 @@ package io.dapr.examples.bindings.http; -import io.dapr.springboot.DaprApplication; +import io.dapr.examples.DaprApplication; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; diff --git a/examples/src/main/java/io/dapr/examples/bindings/http/README.md b/examples/src/main/java/io/dapr/examples/bindings/http/README.md index 91ff90c1dc..5e0ede2f6e 100644 --- a/examples/src/main/java/io/dapr/examples/bindings/http/README.md +++ b/examples/src/main/java/io/dapr/examples/bindings/http/README.md @@ -170,4 +170,4 @@ For bringing down the kafka cluster that was started in the beginning, run docker-compose -f ./src/main/java/io/dapr/examples/bindings/http/docker-compose-single-kafka.yml down ``` -For more details on Dapr Spring Boot integration, please refer to [Dapr Spring Boot](../../../springboot/DaprApplication.java) Application implementation. +For more details on Dapr Spring Boot integration, please refer to [Dapr Spring Boot](../../DaprApplication.java) Application implementation. diff --git a/examples/src/main/java/io/dapr/examples/invoke/grpc/HelloWorldService.java b/examples/src/main/java/io/dapr/examples/invoke/grpc/HelloWorldService.java index c63b0b29e5..b08a8104fa 100644 --- a/examples/src/main/java/io/dapr/examples/invoke/grpc/HelloWorldService.java +++ b/examples/src/main/java/io/dapr/examples/invoke/grpc/HelloWorldService.java @@ -8,7 +8,6 @@ import com.google.protobuf.Any; import io.dapr.v1.AppCallbackGrpc; import io.dapr.v1.CommonProtos; -import io.dapr.v1.DaprAppCallbackProtos; import io.grpc.Server; import io.grpc.ServerBuilder; import io.grpc.stub.StreamObserver; diff --git a/examples/src/main/java/io/dapr/examples/invoke/http/DemoService.java b/examples/src/main/java/io/dapr/examples/invoke/http/DemoService.java index 6b64919673..f4ccd94c77 100644 --- a/examples/src/main/java/io/dapr/examples/invoke/http/DemoService.java +++ b/examples/src/main/java/io/dapr/examples/invoke/http/DemoService.java @@ -5,7 +5,7 @@ package io.dapr.examples.invoke.http; -import io.dapr.springboot.DaprApplication; +import io.dapr.examples.DaprApplication; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; diff --git a/examples/src/main/java/io/dapr/examples/invoke/http/README.md b/examples/src/main/java/io/dapr/examples/invoke/http/README.md index 58f4f88dba..c4a73f1aef 100644 --- a/examples/src/main/java/io/dapr/examples/invoke/http/README.md +++ b/examples/src/main/java/io/dapr/examples/invoke/http/README.md @@ -139,4 +139,4 @@ Once running, the output should display the messages sent from invoker in the de Method have been remotely invoked and displaying the remote messages. -For more details on Dapr Spring Boot integration, please refer to [Dapr Spring Boot](../../../springboot/DaprApplication.java) Application implementation. +For more details on Dapr Spring Boot integration, please refer to [Dapr Spring Boot](../../DaprApplication.java) Application implementation. diff --git a/examples/src/main/java/io/dapr/examples/pubsub/http/Publisher.java b/examples/src/main/java/io/dapr/examples/pubsub/http/Publisher.java index 8b42b295f8..27b28cba3f 100644 --- a/examples/src/main/java/io/dapr/examples/pubsub/http/Publisher.java +++ b/examples/src/main/java/io/dapr/examples/pubsub/http/Publisher.java @@ -9,9 +9,6 @@ import io.dapr.client.DaprClientBuilder; import io.dapr.client.domain.Metadata; -import java.io.IOException; -import java.util.Collections; - import static java.util.Collections.singletonMap; /** diff --git a/examples/src/main/java/io/dapr/examples/pubsub/http/README.md b/examples/src/main/java/io/dapr/examples/pubsub/http/README.md index 8b7933631c..38b62eb78e 100644 --- a/examples/src/main/java/io/dapr/examples/pubsub/http/README.md +++ b/examples/src/main/java/io/dapr/examples/pubsub/http/README.md @@ -243,4 +243,4 @@ No message is consumed by the subscriber app and warnings messages are emitted f ``` -For more details on Dapr Spring Boot integration, please refer to [Dapr Spring Boot](../../../springboot/DaprApplication.java) Application implementation. +For more details on Dapr Spring Boot integration, please refer to [Dapr Spring Boot](../../DaprApplication.java) Application implementation. diff --git a/examples/src/main/java/io/dapr/examples/pubsub/http/Subscriber.java b/examples/src/main/java/io/dapr/examples/pubsub/http/Subscriber.java index 6fb172c637..8f1be8d5cd 100644 --- a/examples/src/main/java/io/dapr/examples/pubsub/http/Subscriber.java +++ b/examples/src/main/java/io/dapr/examples/pubsub/http/Subscriber.java @@ -5,7 +5,7 @@ package io.dapr.examples.pubsub.http; -import io.dapr.springboot.DaprApplication; +import io.dapr.examples.DaprApplication; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; diff --git a/examples/src/main/java/io/dapr/examples/secrets/SecretClient.java b/examples/src/main/java/io/dapr/examples/secrets/SecretClient.java index d739ca35b5..58e33ce694 100644 --- a/examples/src/main/java/io/dapr/examples/secrets/SecretClient.java +++ b/examples/src/main/java/io/dapr/examples/secrets/SecretClient.java @@ -9,7 +9,6 @@ import io.dapr.client.DaprClient; import io.dapr.client.DaprClientBuilder; -import java.io.IOException; import java.util.Map; /** diff --git a/examples/src/main/java/io/dapr/examples/tracing/InvokeClient.java b/examples/src/main/java/io/dapr/examples/tracing/InvokeClient.java index a8fe033951..264c7ae8a4 100644 --- a/examples/src/main/java/io/dapr/examples/tracing/InvokeClient.java +++ b/examples/src/main/java/io/dapr/examples/tracing/InvokeClient.java @@ -10,7 +10,7 @@ import io.dapr.client.domain.HttpExtension; import io.dapr.client.domain.InvokeMethodRequest; import io.dapr.client.domain.InvokeMethodRequestBuilder; -import io.dapr.springboot.OpenTelemetryConfig; +import io.dapr.examples.OpenTelemetryConfig; import io.dapr.utils.TypeRef; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; diff --git a/examples/src/main/java/io/dapr/examples/tracing/README.md b/examples/src/main/java/io/dapr/examples/tracing/README.md index d14a5731d9..6d0338bc56 100644 --- a/examples/src/main/java/io/dapr/examples/tracing/README.md +++ b/examples/src/main/java/io/dapr/examples/tracing/README.md @@ -160,7 +160,7 @@ public class TracingDemoMiddleServiceController { } ``` -The request attribute `opentelemetry-context` in created by parsing the tracing headers in the [OpenTelemetryInterceptor](../../springboot/OpenTelemetryInterceptor.java) class. See the code below: +The request attribute `opentelemetry-context` in created by parsing the tracing headers in the [OpenTelemetryInterceptor](../OpenTelemetryInterceptor.java) class. See the code below: ```java @Component diff --git a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoMiddleServiceController.java b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoMiddleServiceController.java index 6b209fc944..1cdcf33588 100644 --- a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoMiddleServiceController.java +++ b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoMiddleServiceController.java @@ -9,6 +9,7 @@ import io.dapr.client.domain.HttpExtension; import io.dapr.client.domain.InvokeMethodRequest; import io.dapr.client.domain.InvokeMethodRequestBuilder; +import io.dapr.examples.OpenTelemetryInterceptor; import io.dapr.utils.TypeRef; import io.opentelemetry.context.Context; import org.springframework.beans.factory.annotation.Autowired; @@ -21,7 +22,7 @@ /** * SpringBoot Controller to handle service invocation. * - *

Instrumentation is handled in {@link io.dapr.springboot.OpenTelemetryInterceptor}. + *

Instrumentation is handled in {@link OpenTelemetryInterceptor}. */ @RestController public class TracingDemoMiddleServiceController { diff --git a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoService.java b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoService.java index 2f97903918..97d6abf8ae 100644 --- a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoService.java +++ b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoService.java @@ -5,7 +5,8 @@ package io.dapr.examples.tracing; -import io.dapr.springboot.DaprApplication; +import io.dapr.examples.DaprApplication; +import io.dapr.examples.OpenTelemetryInterceptor; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; @@ -14,7 +15,7 @@ /** * Main method to invoke DemoService to test tracing. * - *

Instrumentation is handled in {@link io.dapr.springboot.OpenTelemetryInterceptor}. + *

Instrumentation is handled in {@link OpenTelemetryInterceptor}. * *

1. Build and install jars: * mvn clean install diff --git a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoServiceController.java b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoServiceController.java index 83566d578a..be333718e7 100644 --- a/examples/src/main/java/io/dapr/examples/tracing/TracingDemoServiceController.java +++ b/examples/src/main/java/io/dapr/examples/tracing/TracingDemoServiceController.java @@ -6,6 +6,7 @@ package io.dapr.examples.tracing; import com.fasterxml.jackson.databind.ObjectMapper; +import io.dapr.examples.OpenTelemetryInterceptor; import io.opentelemetry.api.trace.Tracer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -14,7 +15,6 @@ import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Mono; -import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; @@ -24,7 +24,7 @@ /** * SpringBoot Controller to handle service invocation. * - *

Instrumentation is handled in {@link io.dapr.springboot.OpenTelemetryInterceptor}. + *

Instrumentation is handled in {@link OpenTelemetryInterceptor}. */ @RestController public class TracingDemoServiceController { diff --git a/sdk-springboot/pom.xml b/sdk-springboot/pom.xml index 6736c3a8c2..379122eef0 100644 --- a/sdk-springboot/pom.xml +++ b/sdk-springboot/pom.xml @@ -29,8 +29,21 @@ false + 2.3.5.RELEASE + + + + org.springframework.boot + spring-boot-dependencies + ${springboot.version} + pom + import + + + + io.dapr @@ -88,6 +101,17 @@ 5.2.10.RELEASE compile + + org.springframework.boot + spring-boot-autoconfigure + compile + + + org.springframework.boot + spring-boot-configuration-processor + compile + true + diff --git a/sdk-springboot/src/main/java/io/dapr/springboot/DaprAutoConfiguration.java b/sdk-springboot/src/main/java/io/dapr/springboot/DaprAutoConfiguration.java new file mode 100644 index 0000000000..893ecd7a3e --- /dev/null +++ b/sdk-springboot/src/main/java/io/dapr/springboot/DaprAutoConfiguration.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + */ + +package io.dapr.springboot; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +/** + * Dapr's Spring Boot AutoConfiguration. + */ +@Configuration +@ConditionalOnWebApplication +@ComponentScan("io.dapr.springboot") +public class DaprAutoConfiguration { +} diff --git a/sdk-springboot/src/main/java/io/dapr/springboot/DaprBeanPostProcessor.java b/sdk-springboot/src/main/java/io/dapr/springboot/DaprBeanPostProcessor.java index 8671a7c102..3b5d2f9f29 100644 --- a/sdk-springboot/src/main/java/io/dapr/springboot/DaprBeanPostProcessor.java +++ b/sdk-springboot/src/main/java/io/dapr/springboot/DaprBeanPostProcessor.java @@ -7,11 +7,8 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.dapr.Topic; -import io.dapr.client.ObjectSerializer; -import io.dapr.serializer.DefaultObjectSerializer; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.stereotype.Component; diff --git a/sdk-springboot/src/main/java/io/dapr/springboot/DaprController.java b/sdk-springboot/src/main/java/io/dapr/springboot/DaprController.java index 886ae21734..154d7366bb 100644 --- a/sdk-springboot/src/main/java/io/dapr/springboot/DaprController.java +++ b/sdk-springboot/src/main/java/io/dapr/springboot/DaprController.java @@ -12,7 +12,6 @@ import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; diff --git a/sdk-springboot/src/main/resources/META-INF/spring.factories b/sdk-springboot/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..58ff4b58d6 --- /dev/null +++ b/sdk-springboot/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +io.dapr.springboot.DaprAutoConfiguration diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/app/TestApplication.java b/sdk-tests/src/test/java/io/dapr/it/actors/app/TestApplication.java index 4a1089e95d..b774e9b697 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/app/TestApplication.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/app/TestApplication.java @@ -11,7 +11,7 @@ /** * Dapr's HTTP callback implementation via SpringBoot. */ -@SpringBootApplication(scanBasePackages = {"io.dapr.springboot", "io.dapr.it.actors.app"}) +@SpringBootApplication public class TestApplication { /** diff --git a/sdk-tests/src/test/java/io/dapr/it/actors/services/springboot/DaprApplication.java b/sdk-tests/src/test/java/io/dapr/it/actors/services/springboot/DaprApplication.java index 520b2db573..a417cf7d35 100644 --- a/sdk-tests/src/test/java/io/dapr/it/actors/services/springboot/DaprApplication.java +++ b/sdk-tests/src/test/java/io/dapr/it/actors/services/springboot/DaprApplication.java @@ -11,7 +11,7 @@ /** * Dapr's HTTP callback implementation via SpringBoot. */ -@SpringBootApplication(scanBasePackages = {"io.dapr.springboot", "io.dapr.it.actors.services.springboot"}) +@SpringBootApplication public class DaprApplication { /** diff --git a/sdk-tests/src/test/java/io/dapr/it/pubsub/http/SubscriberService.java b/sdk-tests/src/test/java/io/dapr/it/pubsub/http/SubscriberService.java index 801ccac595..91c3fc5bba 100644 --- a/sdk-tests/src/test/java/io/dapr/it/pubsub/http/SubscriberService.java +++ b/sdk-tests/src/test/java/io/dapr/it/pubsub/http/SubscriberService.java @@ -12,7 +12,7 @@ /** * Service for subscriber. */ -@SpringBootApplication(scanBasePackages = {"io.dapr.springboot", "io.dapr.it.pubsub.http"}) +@SpringBootApplication public class SubscriberService { public static final String SUCCESS_MESSAGE = "Completed initialization in";