I actually really don't mind Java-the-language all that much, in fact I'd say I think it's pretty great. My problem with Java is that the ecosystem and culture of Java tend to leaning heavily on annotations for everything. It's not just Spring (though this is probably the worst offender) but everything from Configurations and Command-Line Parsing to DB access and connections, testing, serialization, it seems like overwhelmingly the community leans towards annotations for everything which to me makes working with the tools really difficult to discover and even more difficult to control or modify. There are some exceptions like Vertx.io for instance which are plain-code baed but I find working in a "Java shop" you are usually pushing against the grain if you're trying to avoid Spring/Hibernate/Jackson/etc.
The problem is that without annotations, injecting behavior or doing any sort of metaprogramming is nigh impossible. Higher-order functions aren't fun to deal with in Java, even in the post-Java-8 world.