I also started with Java too, and hated it, though I never did J2EE stuff. But I'm honestly pretty impressed with Spring Framework now. Spring boot brings in the convention over configuration aspect, and spring data lets you specify repository interfaces and it will dynamically generate at runtime an implementation based on the type information and the method names.