Git Product home page Git Product logo

buckpal-spring-hexagonal-arch's Introduction

Get Your Hands Dirty on Clean Architecture

This repository implements a small web app in the Hexagonal Architecture style, as discussed in the book "Get Your Hands Dirty on Clean Architecture".

The code has been updated to the 2nd edition of the book.

Get the print book

Get Your Hands Dirty on Clean Architecture cover

Get the e-book

This is the self-published version, which is only available electronically.

Get Your Hands Dirty on Clean Architecture cover

Companion Articles

Prerequisites

  • JDK 17
  • this project uses Lombok, so enable annotation processing in your IDE

About the book

All About Hexagonal Architecture

  • Learn the concepts behind "Clean Architecture" and "Hexagonal Architecture".
  • Explore a hands-on approach of implementing a Hexagonal architecture with example code on GitHub.
  • Develop your domain code independent of database or web concerns.

Hexagonal Architecture

Get a Grip on Your Layers

  • Learn about potential problems of the common layered architecture style.
  • Free your domain layer of oppressive dependencies using dependency inversion.
  • Structure your code in an architecturally expressive way.
  • Use different methods to enforce architectural boundaries.
  • Learn the consequences of shortcuts and when to accept them.
  • ... and more.

Dependencies

What Readers Say

Tom Hombergs has done a terrific job in explaining clean architecture - from concepts to code. Really wish more technical books would be as clear as that one!

Gernot Starke - Fellow at INNOQ, Founder of arc42, Author of Software Architecture Books, Coach, and Consultant

Love your book. One of the most practical books on hexagonal architecture I have seen/read so far.

Marten Deinum - Spring Framework Contributor and Author of "Spring 5 Recipes" and "Spring Boot 2 Recipes"

A book taken right out of the machine room of software development. Tom talks straight from his experience and guides you through the day-to-day trade-offs necessary to deliver clean architecture.

Sebastian Kempken - Software Architect at Adcubum

Thank you for the great book, it helped me gain significant insight into how one would go about implementing hexagonal and DDD in a modern Spring project.

Spyros Vallianos - Java Developer at Konnekt-able

After reading it I had one of these 'aha' moments when things finally click in your brain.

Manos Tzagkarakis - Java Developer at Datawise

Table of Contents

  1. Maintainability
  2. What's Wrong with Layers?
  3. Inverting Dependencies
  4. Organizing Code
  5. Implementing a Use Case
  6. Implementing a Web Adapter
  7. Implementing a Persistence Adapter
  8. Testing Architecture Elements
  9. Mapping Between Boundaries
  10. Assembling the Application
  11. Taking Shortcuts Consciously
  12. Enforcing Architecture Boundaries
  13. Managing Multiple Bounded Contexts
  14. A Component-Based Approach to Software Architecture
  15. Deciding on an Architecture Style

buckpal-spring-hexagonal-arch's People

Contributors

thombergs avatar mdeinum avatar benjaminknauer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.