I don't know if you are using Spring-boot but if you are, the @Autowired annotation on global variables is not needed as long as your variables are declared final. I like that feature.
Also I agree with Alexandre @Data could be used and a few more annotations could be refactored a bit. In any case I enjoyed reading your story.