https://medium.com/@diliproshitha/demystifying-spring-part-3-lets-implement-dynamic-proxy-f3dd57e2c2fc