Would you recommend courses, books, documentation, or jumping straight to a project and googling things along the way? I have a solid foundation of Java and want to start learning how to develop web apps with it.

Any help much appreciated

  • The way I learned Spring was basically by just being pushed into a Java project that was using it right after I finished uni. Tbh it was a bit overwhelming but I was able to slowly wrap my head around it in about a month or two. It was also the first “real” framework I ever used. Ever since then I started to just jump right into projects and try to grasp the basic concepts of the frameworks used, since they are mostly quite similar and try to expand my knowledge from there on. At least for me this worked well for NestJS, Flask, Django and somehow also for stuff like angular and Android development but there I had to put up with some formerly unknown concepts.

  • I ended up working for a company which had a large Spring project and learnt by working on that. It didn’t seem too hard once I got my head around autowiring.

    That was ten years ago, still using XML configuration files, and once I started working on projects with annotations instead things became a lot easier.

    • Same here. Went straight from University to working with Spring and learning by doing. By now you can actually use ChatGPT as a nice little mentor as well. It’s decent at explaining how things work if you don’t want to google everything.

      • When I was still at university, I started working on a place where Spring was used… they gave me a book called “Spring in Action” to read. I loved reading it and everything made much more sense after that… I highly recommend trying to get a deep understanding of something so central to an application like Spring before you start doing anything more advanced with it. You wouldn’t want to drive a F1 car without first learning how to do it properly, it may be fun at first but you’re likely to crash and burn.

  • As with any framework or language, it depends on how you like to learn things and how quickly you need to start producing code.

    I like to just jump in and read docs where necessary along the way. That doesn’t mean it’s the best way for you.

  • Trial by fire. We were in the infancy stages of a project and the alternative OTS options were really bad for our use case. We had a project manager that really believed in our group and pointed us to the Spring framework as one they had used in the past to solve a number of the same issues we were facing at the time. I had mainly worked in very heavy custom Java environments (no frameworks, and very few third-party dependencies) so dropping into a Framework with actual rules/guidelines was so nice and I’m currently noodling out how to rewrite some of our legacy apps in Spring because of how much it slots into our workflows.

    I don’t love programming books and find them very hard to follow, so I leaned heavily on Baeldung and StackOverflow for most of my questions. Like some of the other comments in this thread, I had a hard time understanding dependency injection since I had no prior experience with it, but man-oh-man is it useful.

  • If you aren’t familiar with dependency injection, that could prove a hurdle. Same for webflux/reactor. I would avoid using webflux until you feel more familiar with non-reactive spring. Otherwise it will feel overwhelming.

  • I was forced to use it because its the default web server framework at my mega-corp. I’ve been using it for almost 7 years now, and I think one of the reasons Spring is popular is because you can pick it up pretty easily if you’ve got an existing app with some examples to work in.

    I think the only three core concepts you have to understand for Spring to make sense are (1) MVC architecture, (2) server-side templating and (3) dependency injection. If you have a reasonable idea of how these things work, you can muddle your way through the rest.