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

Integration with the Spring CLI #183

Open
odrotbohm opened this issue Jun 19, 2023 · 0 comments
Open

Integration with the Spring CLI #183

odrotbohm opened this issue Jun 19, 2023 · 0 comments
Assignees
Labels
module: spring Spring runtime integration type: enhancement New feature or enhancement to an existing one

Comments

@odrotbohm
Copy link
Member

Context

Setting up jMolecules integrations requires developers to make a couple of decisions (“Do we use DDD? What architectural style do we want to use? Do we want to use the ByteBuddy-based code generation?”) and then translate those into the declaration of the proper set of dependencies and build plugins.

Furthermore, using the DDD abstractions often requires the creation of multiple code artifacts to complete a logical step. Adding an aggregate to the system requires:

  1. Defining an Identifier type (usually based on a randomly generated UUID).
  2. Defining the aggregate type implementing AggregateRoot assigning an instance of the identifier.
  3. Declaring a repository type to manage the aggregate.

Problem

While developers, of course, have to make these decisions, the details of the dependency declarations are error-prone and easy to get wrong. In addition, the declaration of new aggregates requires a bit of boilerplate code, that's mostly tedious to create.

Idea

Spring CLI allows hooking user-defined commands that can manipulate files, add build dependencies, and create new source files. We could create such commands to initialize jMolecules integrations for Spring Boot applications easily and also generate the boilerplate code needed to add an aggregate to the project.

@odrotbohm odrotbohm added module: spring Spring runtime integration type: enhancement New feature or enhancement to an existing one labels Jun 19, 2023
@odrotbohm odrotbohm self-assigned this Jun 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
module: spring Spring runtime integration type: enhancement New feature or enhancement to an existing one
Projects
None yet
Development

No branches or pull requests

1 participant