diff --git a/pom.xml b/pom.xml
index a6c550fcc..c840452b2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -112,6 +112,14 @@
jakarta.xml.bind-api
+
+ com.tngtech.archunit
+ archunit
+ 1.0.1
+ test
+
+
+
diff --git a/src/main/java/org/springframework/samples/petclinic/application/UseCase.java b/src/main/java/org/springframework/samples/petclinic/application/UseCase.java
new file mode 100644
index 000000000..856ca0b87
--- /dev/null
+++ b/src/main/java/org/springframework/samples/petclinic/application/UseCase.java
@@ -0,0 +1,5 @@
+package org.springframework.samples.petclinic.application;
+
+public class UseCase {
+
+}
diff --git a/src/main/java/org/springframework/samples/petclinic/domain/MyDomain.java b/src/main/java/org/springframework/samples/petclinic/domain/MyDomain.java
new file mode 100644
index 000000000..1e6a059a3
--- /dev/null
+++ b/src/main/java/org/springframework/samples/petclinic/domain/MyDomain.java
@@ -0,0 +1,5 @@
+package org.springframework.samples.petclinic.domain;
+
+public class MyDomain {
+
+}
diff --git a/src/test/java/org/springframework/samples/petclinic/LayerDependencyRulesTest.java b/src/test/java/org/springframework/samples/petclinic/LayerDependencyRulesTest.java
new file mode 100644
index 000000000..4ea8bb15c
--- /dev/null
+++ b/src/test/java/org/springframework/samples/petclinic/LayerDependencyRulesTest.java
@@ -0,0 +1,26 @@
+package org.springframework.samples.petclinic;
+
+import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;
+
+import com.tngtech.archunit.core.domain.JavaClasses;
+import com.tngtech.archunit.core.importer.ClassFileImporter;
+import com.tngtech.archunit.lang.ArchRule;
+import org.junit.jupiter.api.Test;
+
+class LayerDependencyRulesTest {
+
+ private final JavaClasses importedClasses = new ClassFileImporter()
+ .importPackages("org.springframework.samples.petclinic");
+
+ @Test
+ void applicationLayerShouldNotDependOnInfrastructureLayer() {
+ ArchRule rule = noClasses().that()
+ .resideInAPackage("..application..")
+ .should()
+ .dependOnClassesThat()
+ .resideInAPackage("..infrastructure..");
+
+ rule.check(importedClasses);
+ }
+
+}