https://www.e4developer.com/2018/08/06/spring-boot-best-practices/