Giter Club home page Giter Club logo

spring-boot-java-template's Introduction

SpringBoot Java Template

Twitter Youtube CI License

This is not the best structure. This is a good basic structure to use early in the project when productivity is important.

Remember, as your software grows, your structure must grow too.

Modules

Core

Each submodule of this module is responsible for one domain service.

This must make the modular structure grow with the growth of the service.

core:core-api

It is the only executable module in the project. It is structured to have domains to maximize initial development productivity.

It is also responsible for providing APIs and setting up frameworks for services.

core:core-enum

This module contains enums that are used by core-api and must be delivered to external modules.


Clients

Submodules of this module are responsible for integrating with external systems.

clients:clients-example

This module shows an example of HTTP communication with Spring-Cloud-Open-Feign.


Storage

Submodules of this module are responsible for integrating with the various storages.

storage:db-core

This module shows an example of connecting to MySql using Spring-Data-JPA.


Support

Submodules of this module are responsible for additional support.

support:logging

This module supports logging of service and has a dependency added for distributed tracing support.

It also includes dependencies to support Sentry.

support:monitoring

This module supports monitoring of services.


Tests

Submodules of this module are responsible for the convenience of writing test codes.

tests:api-docs

This module is for writing spring-rest-docs conveniently.


Dependency Management

All dependency versioning is done through gradle.properties file.

If you want to add a new dependency, put the version in gradle.properties and load it in build.gradle.


Runtime Profiles

local

This profile aims to configure an environment that can be developed even if the network is disconnected.

local-dev

This profile aims configurations that allow me to connect to the DEV environment from my local machine.

dev

This profile exists for deploying Development environments.

staging

This profile exists for deploying Staging environments.

live

This profile exists for deploying Live environments.


Test Tasks & Tags

test

This is a collection of test-tasks that we want to run on CI.

If you want to change the settings, modify the build.gradle file.

unitTest

This is a group of tests that typically have no dependencies, are fast to run, and test a single feature.

contextTest

This is a task that runs with SpringContext and has integration tests.

restDocsTest

This is a task to create asciidoc based on spring-rest-docs.

developTest

This is a task of tests that should not be run in CI.

This is a good tag to use if you're not good at writing tests.


Recommended Preferences

Git Hook

This setting makes run lint on every commit.

$ git config core.hookspath .githooks

IntelliJ IDEA

This setting makes it easier to run the test code out of the box.

// Gradle Build and run with IntelliJ IDEA
Build, Execution, Deployment > Build Tools > Gradle > Run tests using > IntelliJ IDEA	

If you want to apply lint settings to the format of IDEA, please refer to the guide below.

Spring Java Format IntelliJ IDEA


Supported By

JetBrains Logo (Main) logo.

spring-boot-java-template's People

Contributors

geminikim avatar mikhi-mh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  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.