https://medium.com/@diliproshitha/demystifying-spring-lets-build-a-simple-framework-to-understand-spring-internals-2d01e28d864