I am a Java dev and Spring user for about 10 years now.
If you want to learn how Spring framework and Spring boot works, the best thing to do is build your own library and then learn to add it to a new spring boot service.
https://www.baeldung.com/spring-boot-custom-starter
Depending on which AI tool you are using, you can also get it to debrief what it is doing and what layer of the Spring architecture it is using (lifecycle, bean scope, is it using auth/messaging/data middleware etc)
Also here is a service I have built with Claude code along with a sample Spring boot service
https://github.com/tomaytotomato/spring-data-solr-lazarus
It is a demo to show that I could get Apache Solr working in the latest version of Spring Framework 7 and Spring Boot 4. There is a sample application in there for a bookstore you can play around with.
Is there a reason why making a spring app and learning hands-on is not feasible?
I know I sometimes get demotivated mid-way, but that also tells me it might not be worth the investment
It's feasible, but I want to try to learn something new with an Ai tutor. See how that goes.
I want to make an spring app, but instead of looking everything up on Google, I can ask the Ai with context and maybe give me an learning plan that fits my needs
Spring is reasonably easy to learn. The hard part is knowing where beans are defined, because Spring doesn't make that easy at all. Anyone and anything can define new beans in any library you pull.
I still don't see why AI would be mandatory. It's helpful, yes, but not mandatory.
is that why navigating a Spring codebase is so confusing? I'm jumping through implementations and definitions and whatever without ever reaching the actual business logic most of the time
I've had mostly problem-free experiences with intellij (ultimate-only feature I think). One click finds declarations both in business code and buried deep in libraries.
Following the code via IDE is indeed easy in javaland - but if you didn't have a breadcrumb yet... Spring boot you didn't architect yourself is indeed annoying to navigate.
Everything can be an entry point and it's often non-obvious how things are structured.
More opinionated frameworks which enforce routes and consumers to be centrally managed are generally easier to figure out from the filesystem.
But if you've got an IDE like intellij you get the entry point tool which lists all endpoints. Consumers are more annoying...