diff --git a/pom.xml b/pom.xml
index 23347243..63d38159 100755
--- a/pom.xml
+++ b/pom.xml
@@ -102,8 +102,8 @@
4.0.0-SNAPSHOT
- 2.8.0-M1
- 2.8.0-M1
+ 2.8.0-SNAPSHOT
+ 2.8.0-SNAPSHOT
${spring-cloud-stream.version}
diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskRuntimeHints.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskRuntimeHints.java
new file mode 100644
index 00000000..c9971258
--- /dev/null
+++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskRuntimeHints.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2022-2022 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.cloud.task.configuration;
+
+import java.sql.Statement;
+
+import org.springframework.aop.SpringProxy;
+import org.springframework.aop.framework.Advised;
+import org.springframework.aot.hint.MemberCategory;
+import org.springframework.aot.hint.RuntimeHints;
+import org.springframework.aot.hint.RuntimeHintsRegistrar;
+import org.springframework.aot.hint.TypeReference;
+import org.springframework.cloud.task.repository.TaskExplorer;
+import org.springframework.cloud.task.repository.TaskRepository;
+import org.springframework.core.DecoratingProxy;
+import org.springframework.util.ClassUtils;
+
+/**
+ * Native Hints for Spring Cloud Task.
+ *
+ * @author Glenn Renfro
+ * @since 3.0
+ */
+public class TaskRuntimeHints implements RuntimeHintsRegistrar {
+
+ @Override
+ public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
+ hints.reflection().registerType(TypeReference.of("java.sql.DatabaseMetaData"), hint -> {
+ });
+ hints.resources().registerPattern("org/springframework/cloud/task/schema-h2.sql");
+ hints.resources().registerPattern("org/springframework/cloud/task/schema-mysql.sql");
+ hints.resources().registerPattern("org/springframework/cloud/task/schema-oracle.sql");
+ hints.resources().registerPattern("org/springframework/cloud/task/schema-postgresql.sql");
+ hints.resources().registerPattern("org/springframework/cloud/task/schema-hsqldb.sql");
+ hints.resources().registerPattern("org/springframework/cloud/task/schema-sqlserver.sql");
+
+ hints.reflection().registerType(
+ TypeReference.of("org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer"),
+ hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS,
+ MemberCategory.INVOKE_DECLARED_METHODS));
+ hints.proxies().registerJdkProxy(builder -> builder.proxiedInterfaces(TaskRepository.class)
+ .proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class));
+ hints.proxies().registerJdkProxy(builder -> builder.proxiedInterfaces(TaskExplorer.class)
+ .proxiedInterfaces(SpringProxy.class, Advised.class, DecoratingProxy.class));
+
+ // Experimental - These can be removed in the future possibly.
+ if (!ClassUtils.isPresent("com.zaxxer.hikari.HikariDataSource", classLoader)) {
+ return;
+ }
+ hints.reflection().registerType(Statement[].class, hint -> {
+ });
+ hints.reflection().registerType(TypeReference.of("com.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry[]"),
+ hint -> {
+ });
+ }
+
+}
diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/AfterTask.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/AfterTask.java
index 7e99f0e1..52e6a206 100644
--- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/AfterTask.java
+++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/AfterTask.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2019 the original author or authors.
+ * Copyright 2016-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.springframework.aot.hint.annotation.Reflective;
import org.springframework.cloud.task.listener.TaskExecutionListener;
import org.springframework.cloud.task.repository.TaskExecution;
@@ -43,6 +44,7 @@ import org.springframework.cloud.task.repository.TaskExecution;
@Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Reflective
public @interface AfterTask {
}
diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/BeforeTask.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/BeforeTask.java
index abf7c6da..ba8b1c6e 100644
--- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/BeforeTask.java
+++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/BeforeTask.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2019 the original author or authors.
+ * Copyright 2016-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.springframework.aot.hint.annotation.Reflective;
import org.springframework.cloud.task.listener.TaskExecutionListener;
import org.springframework.cloud.task.repository.TaskExecution;
@@ -43,6 +44,7 @@ import org.springframework.cloud.task.repository.TaskExecution;
@Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Reflective
public @interface BeforeTask {
}
diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/FailedTask.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/FailedTask.java
index b72fc377..30b6d4b3 100644
--- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/FailedTask.java
+++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/FailedTask.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2019 the original author or authors.
+ * Copyright 2016-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.springframework.aot.hint.annotation.Reflective;
import org.springframework.cloud.task.listener.TaskExecutionListener;
import org.springframework.cloud.task.repository.TaskExecution;
@@ -43,6 +44,7 @@ import org.springframework.cloud.task.repository.TaskExecution;
@Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@Reflective
public @interface FailedTask {
}
diff --git a/spring-cloud-task-core/src/main/resources/META-INF/spring/aot.factories b/spring-cloud-task-core/src/main/resources/META-INF/spring/aot.factories
new file mode 100644
index 00000000..b680bfd2
--- /dev/null
+++ b/spring-cloud-task-core/src/main/resources/META-INF/spring/aot.factories
@@ -0,0 +1,2 @@
+org.springframework.aot.hint.RuntimeHintsRegistrar=\
+org.springframework.cloud.task.configuration.TaskRuntimeHints
diff --git a/spring-cloud-task-samples/batch-job/pom.xml b/spring-cloud-task-samples/batch-job/pom.xml
index c3d43f5f..0f99195a 100644
--- a/spring-cloud-task-samples/batch-job/pom.xml
+++ b/spring-cloud-task-samples/batch-job/pom.xml
@@ -13,7 +13,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.0-M4
+ 3.0.0-SNAPSHOT
diff --git a/spring-cloud-task-samples/jpa-sample/pom.xml b/spring-cloud-task-samples/jpa-sample/pom.xml
index e01aed61..ec2f8411 100644
--- a/spring-cloud-task-samples/jpa-sample/pom.xml
+++ b/spring-cloud-task-samples/jpa-sample/pom.xml
@@ -13,7 +13,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.0-M4
+ 3.0.0-SNAPSHOT
diff --git a/spring-cloud-task-samples/multiple-datasources/pom.xml b/spring-cloud-task-samples/multiple-datasources/pom.xml
index 2121c5f5..31f7af50 100644
--- a/spring-cloud-task-samples/multiple-datasources/pom.xml
+++ b/spring-cloud-task-samples/multiple-datasources/pom.xml
@@ -14,7 +14,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.0-M4
+ 3.0.0-SNAPSHOT
diff --git a/spring-cloud-task-samples/partitioned-batch-job/pom.xml b/spring-cloud-task-samples/partitioned-batch-job/pom.xml
index 982a112b..49e20bf1 100644
--- a/spring-cloud-task-samples/partitioned-batch-job/pom.xml
+++ b/spring-cloud-task-samples/partitioned-batch-job/pom.xml
@@ -12,7 +12,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.0-M4
+ 3.0.0-SNAPSHOT
@@ -20,7 +20,7 @@
4.0.0-SNAPSHOT
UTF-8
17
- 2.8.0-M1
+ 2.8.0-SNAPSHOT
diff --git a/spring-cloud-task-samples/single-step-batch-job/pom.xml b/spring-cloud-task-samples/single-step-batch-job/pom.xml
index 9cc33b27..f884a635 100644
--- a/spring-cloud-task-samples/single-step-batch-job/pom.xml
+++ b/spring-cloud-task-samples/single-step-batch-job/pom.xml
@@ -13,7 +13,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.0-M4
+ 3.0.0-SNAPSHOT
diff --git a/spring-cloud-task-samples/task-observations/pom.xml b/spring-cloud-task-samples/task-observations/pom.xml
index 5aeca82c..0af885ab 100644
--- a/spring-cloud-task-samples/task-observations/pom.xml
+++ b/spring-cloud-task-samples/task-observations/pom.xml
@@ -16,7 +16,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.0-M4
+ 3.0.0-SNAPSHOT
diff --git a/spring-cloud-task-samples/tasksink/pom.xml b/spring-cloud-task-samples/tasksink/pom.xml
index 457b06e1..91d5c01a 100644
--- a/spring-cloud-task-samples/tasksink/pom.xml
+++ b/spring-cloud-task-samples/tasksink/pom.xml
@@ -24,7 +24,7 @@
true
4.0.0-SNAPSHOT
3.0.0-SNAPSHOT
- 2.8.0-M1
+ 2.8.0-SNAPSHOT
diff --git a/spring-cloud-task-samples/timestamp/pom.xml b/spring-cloud-task-samples/timestamp/pom.xml
index 70bee960..4913d485 100644
--- a/spring-cloud-task-samples/timestamp/pom.xml
+++ b/spring-cloud-task-samples/timestamp/pom.xml
@@ -13,7 +13,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.0.0-M4
+ 3.0.0-SNAPSHOT
@@ -62,6 +62,10 @@
org.mariadb.jdbc
mariadb-java-client
+
+ org.postgresql
+ postgresql
+
diff --git a/spring-cloud-task-samples/timestamp/src/main/resources/application.properties b/spring-cloud-task-samples/timestamp/src/main/resources/application.properties
index e74e1450..cba59d43 100644
--- a/spring-cloud-task-samples/timestamp/src/main/resources/application.properties
+++ b/spring-cloud-task-samples/timestamp/src/main/resources/application.properties
@@ -1,2 +1,4 @@
spring.application.name=Demo Timestamp Task
logging.level.org.springframework.cloud.task=DEBUG
+spring.aop.proxy-target-class=false
+