- REST
- Service Layer
- Repository Layer
- In-memory database
- H2
- HSQLDB
- MySQL (RDBMS)
- Migrations
- Seeding
- Maven: Manage version modules
- Spring profile (dev & prod)
- Logging
- Paging
- Sorting
- Transaction
- Association Mapping (@ManyToOne, @ManyToMany, @OneToMany, @OneToOne)
- Unidirectional
- Bidirectional
- Annotation Validate
- YAML (yml)
- Create Base
- BaseEntity
- BaseRepository
- BaseService
- BaseController
- Helper: Util & Bean
- Custom response data {status_code, message, data, ...}
- JPA
- Live Reload (spring-boot-devtools) (Removed to get more performance when coding)
- Get property from application.yml (application.properties) (@Value & Environment)
- Validation groups
- Jackson @JsonView (multiple view)
- Jackson @JsonProperty
- MongoDB (NoSQL)
- HATEOAS
- OAuth2
- JWT
- Async
- Cache
- Session & Cookie
- Multi-language
- Task scheduling
- File storage
- Mocking
- Multiple database (eg: Multiple MySQL, ...)
- HTTPS
- DDD
-
Bean Mapping:
- Mapstruct (Removed cause must rebuild it to get implement class every run)
- Mapper of Spring Framework
org.springframework.beans.BeanUtils
(Removed cause it very simple) - Mapper of Apache
BeanUtils
- ModelMapper
- Dozer
- Orika
-
Build:
- Maven
- Gradle
-
Server:
- Tomcat (Replace to Jetty)
- Jetty
-
Logging:
- SLF4J (Simple Logging Facade for Java)
-
JSON:
- Jackson
-
Code Generators:
- Lombok
-
Document Processing:
- Swagger
-
Cache:
- EhCache
- JCache (default cache Java)
-
Database migration tool:
- Liquibase
- Flyway
-
ORM:
- Hibernate
- Cache Level Hibernate (default Hibernate use EhCache)
-
Testing:
- JUnit
- Arquillian
- Mockito
-
Joda DateTime
-
Utility:
- Guava
-
Web Crawling:
- JSoup
-
Search:
- Elasticsearch
- Apache Solr
-
Microservice:
- Apollo
- consul-api
- Eureka
- Lagom
- Hystrix
- Zuul
-
Only update version child module depend on its parent (Recommended)
mvn -N versions:update-child-modules
-
Update parent & child module
mvn versions:set -DnewVersion=2.0-SNAPSHOT
- Create database first
- h2:
mvn spring-boot:run
- Dev:
mvn spring-boot:run -Dspring.profiles.active=dev
- Prod:
mvn spring-boot:run -Dspring.profiles.active=prod