项目作者: sivaprasadreddy

项目描述 :
A Yeoman generator for generating Microservice with SpringBoot
高级语言: Java
项目地址: git://github.com/sivaprasadreddy/generator-springboot.git
创建时间: 2019-07-25T10:03:14Z
项目社区:https://github.com/sivaprasadreddy/generator-springboot

开源协议:MIT License

下载


generator-springboot

The Yeoman generator for generating Spring Boot microservices.

Prerequisites

  • Node 20+
  • JDK 17+

Installation

  1. $ npm install -g yo
  2. $ npm install -g generator-springboot

How to use?

Run the following command and answer the questions:

  1. $ yo springboot

Features

The generator-springboot generates a Spring Boot application with the following features configured:

  • Spring Boot project with Maven and Gradle support
  • Spring Data JPA integration with an option to select databases like MySQL, Postgresql, MariaDB.
  • Flyway and Liquibase database migration support.
  • Spring Cloud AWS support with LocalStack configuration.
  • CORS configuration
  • Swagger UI Integration
  • SpringBoot Actuator configuration
  • Testcontainers based Testing and Local dev mode setup
  • DockerCompose configuration for application, ELK, Prometheus, Grafana
  • GitHub Actions Configuration
  • Dockerfile
  • Jenkinsfile
  • SonarQube and JaCoCo based static analysis tools configuration
  • Code formatting using Spotless and google-java-format
  • JUnit 5

Generate a SpringBoot Microservice

After installing the generator-springboot, you can generate a new Spring Boot application as follows:

  1. $ yo springboot
  2. Generating SpringBoot Application
  3. ? What is the application name? blog
  4. ? What is the default package name? com.sivalabs.blog
  5. ? Which type of database you want to use? Postgresql
  6. ? Which type of database migration tool you want to use? FlywayDB
  7. ? Select the features you want? ELK Docker configuration, Prometheus, Grafana Docker configuration, Localstack Docker configuration
  8. ? Which build tool do you want to use? Maven
  9. force blog/.yo-rc.json
  10. create blog/mvnw
  11. create blog/mvnw.cmd
  12. create blog/.gitignore
  13. create blog/.mvn/wrapper/maven-wrapper.jar
  14. create blog/.mvn/wrapper/maven-wrapper.properties
  15. create blog/pom.xml
  16. create blog/Dockerfile
  17. create blog/Jenkinsfile
  18. create blog/lombok.config
  19. create blog/sonar-project.properties
  20. create blog/README.md
  21. create blog/.github/workflows/maven.yml
  22. create blog/src/main/resources/db/migration/postgresql/V1__01_init.sql
  23. create blog/docker/docker-compose.yml
  24. create blog/docker/docker-compose-app.yml
  25. create blog/docker/docker-compose-monitoring.yml
  26. create blog/config/prometheus/prometheus.yml
  27. create blog/config/grafana/provisioning/dashboards/basic-dashboard.json
  28. create blog/config/grafana/provisioning/dashboards/dashboard.yml
  29. create blog/config/grafana/provisioning/dashboards/jvm-micrometer_rev10.json
  30. create blog/config/grafana/provisioning/datasources/datasource.yml
  31. create blog/docker/docker-compose-elk.yml
  32. create blog/config/elk/logstash.conf
  33. create blog/.localstack/01_init.sh
  34. create blog/src/main/java/com/sivalabs/blog/Application.java
  35. create blog/src/main/java/com/sivalabs/blog/config/WebMvcConfig.java
  36. create blog/src/main/java/com/sivalabs/blog/config/SwaggerConfig.java
  37. create blog/src/main/java/com/sivalabs/blog/config/ApplicationProperties.java
  38. create blog/src/main/java/com/sivalabs/blog/config/Initializer.java
  39. create blog/src/main/java/com/sivalabs/blog/config/GlobalExceptionHandler.java
  40. create blog/src/main/java/com/sivalabs/blog/config/logging/Loggable.java
  41. create blog/src/main/java/com/sivalabs/blog/config/logging/LoggingAspect.java
  42. create blog/src/main/java/com/sivalabs/blog/exception/ResourceNotFoundException.java
  43. create blog/src/main/java/com/sivalabs/blog/model/response/PagedResult.java
  44. create blog/src/main/java/com/sivalabs/blog/utils/AppConstants.java
  45. create blog/src/main/resources/application.properties
  46. create blog/src/main/resources/application-local.properties
  47. create blog/src/main/resources/logback-spring.xml
  48. create blog/src/test/java/com/sivalabs/blog/ApplicationIntegrationTest.java
  49. create blog/src/test/java/com/sivalabs/blog/SchemaValidationTest.java
  50. create blog/src/test/java/com/sivalabs/blog/common/ContainersConfig.java
  51. create blog/src/test/java/com/sivalabs/blog/common/AbstractIntegrationTest.java
  52. create blog/src/test/java/com/sivalabs/blog/TestApplication.java
  53. create blog/src/test/java/com/sivalabs/blog/SqsListenerIntegrationTest.java
  54. create blog/src/test/resources/application-test.properties
  55. create blog/src/test/resources/logback-test.xml
  56. No change to package.json was detected. No package manager install will be executed.
  57. Picked up JAVA_TOOL_OPTIONS: -Xmx3489m
  58. [INFO] Scanning for projects...
  59. [INFO]
  60. [INFO] -----------------------< com.sivalabs.blog:blog >-----------------------
  61. [INFO] Building blog 0.0.1-SNAPSHOT
  62. [INFO] from pom.xml
  63. [INFO] --------------------------------[ jar ]---------------------------------
  64. [INFO]
  65. [INFO] --- spotless:2.39.0:apply (default-cli) @ blog ---
  66. [INFO] Index file does not exist. Fallback to an empty index
  67. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/config/SwaggerConfig.java
  68. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/config/GlobalExceptionHandler.java
  69. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/config/logging/LoggingAspect.java
  70. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/exception/ResourceNotFoundException.java
  71. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/model/response/PagedResult.java
  72. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/test/java/com/sivalabs/blog/common/ContainersConfig.java
  73. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/test/java/com/sivalabs/blog/common/AbstractIntegrationTest.java
  74. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/test/java/com/sivalabs/blog/SchemaValidationTest.java
  75. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/test/java/com/sivalabs/blog/TestApplication.java
  76. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/test/java/com/sivalabs/blog/SqsListenerIntegrationTest.java
  77. [INFO] Spotless.Java is keeping 17 files clean - 10 were changed to be clean, 7 were already clean, 0 were skipped because caching determined they were already clean
  78. [INFO] ------------------------------------------------------------------------
  79. [INFO] BUILD SUCCESS
  80. [INFO] ------------------------------------------------------------------------
  81. [INFO] Total time: 4.454 s
  82. [INFO] Finished at: 2023-10-25T16:57:22Z
  83. [INFO] ------------------------------------------------------------------------
  84. ==========================================
  85. Your application is generated successfully
  86. cd blog
  87. > ./mvnw spring-boot:run
  88. ==========================================

Generate REST API with CRUD operations

You can generate REST API with CRUD operation using the following command:

IMPORTANT: You should run the following command from within the generated project folder.

  1. $ cd blog
  2. $ yo springboot:controller Customer --base-path /api/customers

This sub-generator will generate the following:

  • JPA entity
  • Spring Data JPA Repository
  • Service
  • Spring MVC REST Controller with CRUD operations
  • Unit and Integration Tests for REST Controller
  • Flyway or Liquibase migration to create table
  1. $ yo springboot:controller Customer --base-path /api/customers
  2. Generating JPA entity, repository, service and controller
  3. EntityName: Customer, basePath: /api/customers
  4. force .yo-rc.json
  5. create src/main/java/com/sivalabs/blog/entities/Customer.java
  6. create src/main/java/com/sivalabs/blog/exception/CustomerNotFoundException.java
  7. create src/main/java/com/sivalabs/blog/mapper/CustomerMapper.java
  8. create src/main/java/com/sivalabs/blog/model/query/FindCustomersQuery.java
  9. create src/main/java/com/sivalabs/blog/model/request/CustomerRequest.java
  10. create src/main/java/com/sivalabs/blog/model/response/CustomerResponse.java
  11. create src/main/java/com/sivalabs/blog/repositories/CustomerRepository.java
  12. create src/main/java/com/sivalabs/blog/services/CustomerService.java
  13. create src/main/java/com/sivalabs/blog/web/controllers/CustomerController.java
  14. create src/test/java/com/sivalabs/blog/web/controllers/CustomerControllerTest.java
  15. create src/test/java/com/sivalabs/blog/web/controllers/CustomerControllerIT.java
  16. create src/test/java/com/sivalabs/blog/services/CustomerServiceTest.java
  17. create src/main/resources/db/migration/postgresql/V2__create_customers_table.sql
  18. No change to package.json was detected. No package manager install will be executed.
  19. Picked up JAVA_TOOL_OPTIONS: -Xmx3489m
  20. [INFO] Scanning for projects...
  21. [INFO]
  22. [INFO] -----------------------< com.sivalabs.blog:blog >-----------------------
  23. [INFO] Building blog 0.0.1-SNAPSHOT
  24. [INFO] from pom.xml
  25. [INFO] --------------------------------[ jar ]---------------------------------
  26. [INFO]
  27. [INFO] --- spotless:2.39.0:apply (default-cli) @ blog ---
  28. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/exception/CustomerNotFoundException.java
  29. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/model/query/FindCustomersQuery.java
  30. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/model/request/CustomerRequest.java
  31. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/entities/Customer.java
  32. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/mapper/CustomerMapper.java
  33. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/services/CustomerService.java
  34. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/main/java/com/sivalabs/blog/web/controllers/CustomerController.java
  35. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/test/java/com/sivalabs/blog/web/controllers/CustomerControllerIT.java
  36. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/test/java/com/sivalabs/blog/web/controllers/CustomerControllerTest.java
  37. [INFO] Writing clean file: /workspace/generator-springboot/blog/src/test/java/com/sivalabs/blog/services/CustomerServiceTest.java
  38. [INFO] Spotless.Java is keeping 28 files clean - 10 were changed to be clean, 1 were already clean, 17 were skipped because caching determined they were already clean
  39. [INFO] ------------------------------------------------------------------------
  40. [INFO] BUILD SUCCESS
  41. [INFO] ------------------------------------------------------------------------
  42. [INFO] Total time: 2.246 s
  43. [INFO] Finished at: 2023-10-25T16:59:48Z
  44. [INFO] ------------------------------------------------------------------------

Local Development Setup

  1. $ git clone https://github.com/sivaprasadreddy/generator-springboot.git
  2. $ cd generator-springboot
  3. $ npm install -g yo
  4. $ npm install
  5. $ npm link
  6. $ yo springboot

Releasing a new version

Before publishing a new release, make sure to update the version number in package.json updated.

  1. $ npm login
  2. $ npm publish

License

The generator-springboot is an Open Source software released under the MIT Licence