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