Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#2373 feature add: Vertical Slice Architecture. #3136

Open
wants to merge 23 commits into
base: master
Choose a base branch
from

Conversation

sugan0tech
Copy link
Contributor

Added the Vertical Slice Architecture #2373. previous PR: #2828

Copy link

github-actions bot commented Feb 7, 2025

PR Summary

This PR introduces the Vertical Slice Architecture design pattern. The application is organized by feature, each with its own models, services, repositories, and views. This improves modularity and reduces mocking needs. New files include models, services, repositories, views, tests, and updated documentation.

Changes

File Summary
pom.xml The pom.xml file was modified to include the new vertical-slice-architecture module.
vertical-slice-architecture/README.md This README describes the Vertical Slice Architecture, its intent, explanation with real-world examples, class diagrams, applicability, and resources.
vertical-slice-architecture/etc/vertical-slice-architecture.urm.png New file: Class diagram for the Vertical Slice Architecture.
vertical-slice-architecture/etc/vertical-slice-architecture.urm.puml New file: PlantUML class diagram for the Vertical Slice Architecture.
vertical-slice-architecture/pom.xml This file configures the Maven project for the vertical-slice-architecture module, including dependencies for Spring Boot, JPA, and H2 database.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/App.java This is the main application class for the vertical slice architecture example. It uses Spring Boot for dependency injection and configuration.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/Runner.java This class initializes and populates the database with sample data for testing purposes. It uses Spring's CommandLineRunner interface.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/customer/Customer.java This is the entity class for Customer, representing a customer in the system. It uses JPA annotations for database persistence.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/customer/CustomerRepository.java This is the repository interface for Customer, providing methods for database interaction. It extends Spring Data JPA's JpaRepository.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/customer/CustomerService.java This service class provides business logic for Customer operations, such as creating and retrieving customers.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/customer/CustomerView.java This class handles the presentation logic for Customer, displaying customer information.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/order/OrderRepository.java This is the repository interface for Orders, providing methods for database interaction. It extends Spring Data JPA's JpaRepository.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/order/OrderService.java This service class provides business logic for Order operations, such as creating and retrieving orders.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/order/OrderView.java This class handles the presentation logic for Order, displaying order information.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/order/Orders.java This is the entity class for Orders, representing an order in the system. It uses JPA annotations for database persistence.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/product/Product.java This is the entity class for Product, representing a product in the system. It uses JPA annotations for database persistence.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/product/ProductRepository.java This is the repository interface for Product, providing methods for database interaction. It extends Spring Data JPA's JpaRepository.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/product/ProductService.java This service class provides business logic for Product operations, such as creating and retrieving products.
vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/product/ProductView.java This class handles the presentation logic for Product, displaying product information.
vertical-slice-architecture/src/main/resources/application.properties This file contains configuration properties for the application, such as database connection details.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/AppTests.java This test class verifies the application context and main method.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/customer/CustomerServiceTest.java This test class contains unit tests for the CustomerService class.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/customer/CustomerTest.java This test class contains unit tests for the Customer entity class.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/customer/CustomerViewTest.java This test class contains unit tests for the CustomerView class.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/order/OrderServiceTest.java This test class contains unit tests for the OrderService class.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/order/OrderViewTest.java This test class contains unit tests for the OrderView class.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/order/OrdersTest.java This test class contains unit tests for the Orders entity class.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/product/ProductServiceTest.java This test class contains unit tests for the ProductService class.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/product/ProductTest.java This test class contains unit tests for the Product entity class.
vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/product/ProductViewTest.java This test class contains unit tests for the ProductView class.

autogenerated by presubmit.ai

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (22)
  • a53c5d9: Merge branch 'iluwatar:master' into master
  • b1c2f35: fix: prevent H2 shutdown warnings by disabling DB_CLOSE_ON_EXIT
  • b12e751: fix: align logging dependencies with Spring Boot by excluding incompatible SLF4J and Logback versions
  • 0a39bed: Merge branch 'iluwatar:master' into master
  • 6d83016: Merge branch 'iluwatar:master' into master
  • 7e775f3: Merge branch 'master' into master
  • e704103: Merge branch 'master' into master
  • 08b77c5: added file structure.
  • 70fde67: Merge remote-tracking branch 'origin/master'
  • c52566d: correction updated with pattern template.
  • dda150f: Merge branch 'master' into master
  • 72c9c87: Merge branch 'master' into master
  • b84112d: Merge branch 'master' into master
  • 0b160cb: Merge branch 'master' into master
  • 4e0c2c2: Merge branch 'master' into master
  • 24d5063: Added better explanation and updated README.md
  • cf06c64: Merge branch 'iluwatar:master' into master
  • c189ae9: added more context with example
  • 272cb87: local variable in var declaration
  • 1b130b1: App code coverage changes
  • 3f1828a: fixed code smell
  • 777a5dc: Vertical slice architecture #2373 add: Vertical Slice Architecture.
Files Processed (30)
  • pom.xml (1 hunk)
  • vertical-slice-architecture/README.md (1 hunk)
  • vertical-slice-architecture/etc/vertical-slice-architecture.urm.png (0 hunks)
  • vertical-slice-architecture/etc/vertical-slice-architecture.urm.puml (1 hunk)
  • vertical-slice-architecture/pom.xml (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/App.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/Runner.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/customer/Customer.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/customer/CustomerRepository.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/customer/CustomerService.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/customer/CustomerView.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/order/OrderRepository.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/order/OrderService.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/order/OrderView.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/order/Orders.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/product/Product.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/product/ProductRepository.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/product/ProductService.java (1 hunk)
  • vertical-slice-architecture/src/main/java/com/iluwatar/verticalslicearchitecture/product/ProductView.java (1 hunk)
  • vertical-slice-architecture/src/main/resources/application.properties (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/AppTests.java (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/customer/CustomerServiceTest.java (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/customer/CustomerTest.java (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/customer/CustomerViewTest.java (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/order/OrderServiceTest.java (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/order/OrderViewTest.java (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/order/OrdersTest.java (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/product/ProductServiceTest.java (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/product/ProductTest.java (1 hunk)
  • vertical-slice-architecture/src/test/java/com/iluwatar/verticalslicearchitecture/product/ProductViewTest.java (1 hunk)
Actionable Comments (0)
Skipped Comments (0)

@sugan0tech sugan0tech marked this pull request as ready for review February 7, 2025 03:04
@iluwatar
Copy link
Owner

The build is failing. Please ensure that all the checks pass before requesting review.

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Review Summary

Commits Considered (1)
  • 0dc87ed: Merge branch 'master' into master
Files Processed (0)
Actionable Comments (0)
Skipped Comments (0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants