spring-modulith
spring-modulith copied to clipboard
Modular applications with Spring Boot
= Spring Modulith image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A["Revved up by Develocity", link="https://ge.spring.io/scans?search.rootProjectNames=Spring Modulith"]
:docs: https://docs.spring.io/spring-modulith/docs/current-SNAPSHOT/reference/html/
Spring Modulith allows developers to build well-structured Spring Boot applications and guides developers in finding and working with link:{docs}#fundamentals.modules.application-modules[application modules] driven by the domain. It supports the link:{docs}#verification[verification] of such modular arrangements, link:{docs}#testing[integration testing] individual modules, link:{docs}#observability[observing] the application's behavior on the module level and creating link:{docs}#documentation[documentation snippets] based on the arrangement created.
== Quickstart
. Create a Spring Boot application on https://start.spring.io
. Add Spring Modulith to your application by adding this to your pom.xml:
+
[source, xml]
@Test void writeDocumentationSnippets() {
var modules = ApplicationModules.of(Application.class).verify(); <1>
new Documenter(modules) <2>
.writeModulesAsPlantUml()
.writeIndividualModulesAsPlantUml();
} }
<1> Creates application module model and link:{docs}#verification[verifies its structure].
<2> Renders link:{docs}#documentation[Asciidoctor snippets] (component diagrams, application module canvas) to target/modulith-docs.
. Run link:{docs}#testing[integration tests] for individual application modules.
+
[source, text, subs="macros"]
□ Example └─ □ src/test/java └─ □ example.order └─ OrderModuleIntegrationTests.java
[source, java]
@ApplicationModuleTests class OrderModuleIntegrationTests {
@Test void someTestMethod() { … } }
== Reference documentation
Find the reference documentation link:{docs}[here].
== Contributing
https://help.github.com/articles/creating-a-pull-request[Pull requests] are welcome. Note, that we expect everyone to follow the https://github.com/spring-projects/.github/blob/main/CODE_OF_CONDUCT.md[code of conduct].
=== What you will need
- Git
- Java 17 or higher
- Docker version 1.6.0 or higher
=== Get the Source Code
Clone the repository
[source,bash]
git clone [email protected]:spring-projects/spring-modulith.git cd spring-modulith
=== Build the code
To compile, test, and build
[source,bash]
./mvnw -B
== License Spring Modulith is Open Source software released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].