diff --git a/spring-modulith-core/src/main/java/org/springframework/modulith/core/ApplicationModules.java b/spring-modulith-core/src/main/java/org/springframework/modulith/core/ApplicationModules.java index 54d4215e..ca9758ce 100644 --- a/spring-modulith-core/src/main/java/org/springframework/modulith/core/ApplicationModules.java +++ b/spring-modulith-core/src/main/java/org/springframework/modulith/core/ApplicationModules.java @@ -17,6 +17,7 @@ package org.springframework.modulith.core; import static com.tngtech.archunit.base.DescribedPredicate.*; import static com.tngtech.archunit.core.domain.JavaClass.Predicates.*; +import static com.tngtech.archunit.core.domain.properties.CanBeAnnotated.Predicates.*; import static com.tngtech.archunit.core.domain.properties.HasName.Predicates.*; import static java.util.stream.Collectors.*; @@ -33,6 +34,7 @@ import org.jgrapht.graph.DefaultDirectedGraph; import org.jgrapht.graph.DefaultEdge; import org.jgrapht.traverse.TopologicalOrderIterator; import org.jmolecules.archunit.JMoleculesDddRules; +import org.springframework.aot.generate.Generated; import org.springframework.core.annotation.AnnotationAwareOrderComparator; import org.springframework.core.io.support.SpringFactoriesLoader; import org.springframework.lang.Nullable; @@ -44,6 +46,7 @@ import org.springframework.util.function.SingletonSupplier; import com.tngtech.archunit.base.DescribedPredicate; import com.tngtech.archunit.core.domain.JavaClass; import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.domain.properties.CanBeAnnotated; import com.tngtech.archunit.core.domain.properties.HasName; import com.tngtech.archunit.core.importer.ClassFileImporter; import com.tngtech.archunit.core.importer.ImportOption; @@ -64,8 +67,8 @@ public class ApplicationModules implements Iterable { private static final ImportOption IMPORT_OPTION = new ImportOption.DoNotIncludeTests(); private static final boolean JGRAPHT_PRESENT = ClassUtils.isPresent("org.jgrapht.Graph", ApplicationModules.class.getClassLoader()); - private static final DescribedPredicate IS_AOT_TYPE = nameContaining("__") - .or(nameContaining("$$SpringCGLIB$$")); + private static final DescribedPredicate IS_AOT_TYPE = annotatedWith(Generated.class); + private static final DescribedPredicate IS_SPRING_CGLIB_PROXY = nameContaining("$$SpringCGLIB$$"); static { @@ -101,7 +104,7 @@ public class ApplicationModules implements Iterable { this.allClasses = new ClassFileImporter() // .withImportOption(option) // .importPackages(packages) // - .that(not(ignored.or(IS_AOT_TYPE))); + .that(not(ignored.or(IS_AOT_TYPE).or(IS_SPRING_CGLIB_PROXY))); Classes classes = Classes.of(allClasses); diff --git a/spring-modulith-integration-test/src/main/java/com/acme/myproject/aot/Spring__Aot.java b/spring-modulith-integration-test/src/main/java/com/acme/myproject/aot/Spring__Aot.java index 7ab49fd5..445f83ac 100644 --- a/spring-modulith-integration-test/src/main/java/com/acme/myproject/aot/Spring__Aot.java +++ b/spring-modulith-integration-test/src/main/java/com/acme/myproject/aot/Spring__Aot.java @@ -15,10 +15,12 @@ */ package com.acme.myproject.aot; +import org.springframework.aot.generate.Generated; + /** - * * @author Oliver Drotbohm */ +@Generated public class Spring__Aot { }