diff --git a/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/aot/ApplicationListenerMethodAdapterRuntimeHints.java b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/aot/ApplicationListenerMethodAdapterRuntimeHints.java
new file mode 100644
index 000000000..64442b03e
--- /dev/null
+++ b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/aot/ApplicationListenerMethodAdapterRuntimeHints.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2023 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.modulith.events.aot;
+
+import org.springframework.aot.hint.ExecutableMode;
+import org.springframework.aot.hint.RuntimeHints;
+import org.springframework.aot.hint.RuntimeHintsRegistrar;
+import org.springframework.context.ApplicationEvent;
+import org.springframework.context.event.ApplicationListenerMethodAdapter;
+import org.springframework.util.ReflectionUtils;
+
+/**
+ * @author Oliver Drotbohm
+ */
+public class ApplicationListenerMethodAdapterRuntimeHints implements RuntimeHintsRegistrar {
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.springframework.aot.hint.RuntimeHintsRegistrar#registerHints(org.springframework.aot.hint.RuntimeHints, java.lang.ClassLoader)
+	 */
+	@Override
+	public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
+
+		var reflection = hints.reflection();
+
+		var method = ReflectionUtils.findMethod(ApplicationListenerMethodAdapter.class,
+				"shouldHandle", ApplicationEvent.class);
+
+		if (method == null) {
+			method = ReflectionUtils.findMethod(ApplicationListenerMethodAdapter.class,
+					"shouldHandle", ApplicationEvent.class, Object[].class);
+		}
+
+		if (method != null) {
+			reflection.registerMethod(method, ExecutableMode.INVOKE);
+		}
+	}
+}
diff --git a/spring-modulith-events/spring-modulith-events-core/src/main/resources/META-INF/spring/aot.factories b/spring-modulith-events/spring-modulith-events-core/src/main/resources/META-INF/spring/aot.factories
index 6cd198454..57aa3791b 100644
--- a/spring-modulith-events/spring-modulith-events-core/src/main/resources/META-INF/spring/aot.factories
+++ b/spring-modulith-events/spring-modulith-events-core/src/main/resources/META-INF/spring/aot.factories
@@ -1,2 +1,4 @@
 org.springframework.beans.factory.aot.BeanRegistrationAotProcessor=\
     org.springframework.modulith.events.aot.TransactionalEventListenerAotProcessor
+org.springframework.aot.hint.RuntimeHintsRegistrar=\
+    org.springframework.modulith.events.aot.ApplicationListenerMethodAdapterRuntimeHints
diff --git a/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/aot/ApplicationListenerMethodAdapterRuntimeHintsUnitTests.java b/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/aot/ApplicationListenerMethodAdapterRuntimeHintsUnitTests.java
new file mode 100644
index 000000000..fe34ab4b9
--- /dev/null
+++ b/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/aot/ApplicationListenerMethodAdapterRuntimeHintsUnitTests.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2023 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.modulith.events.aot;
+
+import static org.assertj.core.api.Assertions.*;
+import static org.assertj.core.api.InstanceOfAssertFactories.*;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.aot.hint.ExecutableHint;
+import org.springframework.aot.hint.ExecutableMode;
+import org.springframework.aot.hint.RuntimeHints;
+import org.springframework.context.event.ApplicationListenerMethodAdapter;
+
+/**
+ * Unit tests for {@link ApplicationListenerMethodAdapterRuntimeHints}.
+ *
+ * @author Oliver Drotbohm
+ */
+class ApplicationListenerMethodAdapterRuntimeHintsUnitTests {
+
+	@Test // GH-364
+	void registersMethodsForReflection() {
+
+		var hints = new RuntimeHints();
+
+		new ApplicationListenerMethodAdapterRuntimeHints()
+				.registerHints(hints, getClass().getClassLoader());
+
+		var typeHint = hints.reflection()
+				.getTypeHint(ApplicationListenerMethodAdapter.class);
+
+		assertThat(typeHint)
+				.isNotNull()
+				.extracting(it -> it.methods())
+				.asInstanceOf(stream(ExecutableHint.class))
+				.hasSize(1)
+				.element(0)
+				.satisfies(it -> {
+					assertThat(it.getName()).isEqualTo("shouldHandle");
+					assertThat(it.getMode()).isEqualTo(ExecutableMode.INVOKE);
+				});
+	}
+}