Skip to content

ntxinh/spring-boot-monolithic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TODO:

SESSION 0: BASIC

  • 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

SESSION 1: INTERMEDIATE

  • Async
  • Cache
  • Session & Cookie
  • Multi-language
  • Mail
  • Task scheduling
  • File storage
  • Mocking
  • Multiple database (eg: Multiple MySQL, ...)
  • HTTPS

SESSION 2: ADVANCE

  • DDD

SESSION 3: 3RD PARTY

  • 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



Maven: Manage version multiple module

  • 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

RUN LOCALLY

  • 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

ACCESS LINK