I like to use Spring Boot so that everything is just annotation based, plus a little bit of configuration in application.properties.
When needed, I do some JavaConfig to override Spring Boot's stuff or add new stuff.
I find annotations are really a great invention! And yes this kind of Spring configuration is versatile and you get errors at compile time, which is time saving. Plus, when doing JavaConfig you also get autocomplete from your
IDE, so you even save more time in regards to XML config.