https://github.com/schneidersteve/buckpal-java
Java Example Implementation of a Hexagonal/Onion/Clean Architecture
https://github.com/schneidersteve/buckpal-java
clean-architecture dependency-injection hexagonal-architecture inversion-of-control java micronaut micronaut-data onion-architecture project project-reactor r2dbc spock
Last synced: about 1 year ago
JSON representation
Java Example Implementation of a Hexagonal/Onion/Clean Architecture
- Host: GitHub
- URL: https://github.com/schneidersteve/buckpal-java
- Owner: schneidersteve
- License: agpl-3.0
- Created: 2023-03-22T07:34:01.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-26T21:44:07.000Z (about 3 years ago)
- Last Synced: 2023-07-24T19:54:18.335Z (almost 3 years ago)
- Topics: clean-architecture, dependency-injection, hexagonal-architecture, inversion-of-control, java, micronaut, micronaut-data, onion-architecture, project, project-reactor, r2dbc, spock
- Language: Java
- Homepage:
- Size: 176 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Java Example Implementation of a Hexagonal/Onion/Clean Architecture
Inspired by https://github.com/thombergs/buckpal
- Kotlin Version: https://github.com/schneidersteve/buckpal-kotlin
- Rust Version: https://github.com/schneidersteve/buckpal-rust
- Dart Version: https://github.com/schneidersteve/buckpal-dart
## Tech Stack
* [GraalVM Java 17](https://www.graalvm.org)
* [Project Reactor](https://projectreactor.io)
* [Spock](https://github.com/spockframework/spock)
* [Micronaut](https://micronaut.io)
* [Micronaut Data - R2DBC](https://micronaut-projects.github.io/micronaut-data/latest/guide/#dbc)
* [Visual Studio Code](https://code.visualstudio.com)
* [Visual Studio Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-a-git-repository-or-github-pr-in-an-isolated-container-volume)
## Layers and Dependency Inversion

## Send Money Use Case
```gherkin
Feature: Send Money
Scenario: Transaction succeeds
Given a source account
And a target account
When money is send
Then send money succeeds
And source account is locked
And source account withdrawal will succeed
And source account is released
And target account is locked
And target account deposit will succeed
And target account is released
And accounts have been updated
```
# Gradle Examples
> ./gradlew test
> ./gradlew test -t