title: Spring: confusion over the right learning path
body: <p>The past few days I've been teaching myself Spring Boot and created a REST web service server and client, then added basic authentication and deployed as a standalone and a war package. I did this through incorporating <code>spring-boot-starter-web</code>, <code>spring-boot-starter-test</code>, <code>spring-boot-starter</code>, <code>spring-boot-starter-security</code>, <code>spring-boot-starter-tomcat</code>, <code>spring-web</code>, <code>jackson-databind</code> in my gradle project and copying hten modifying via various websites.</p>
  
  <p>After getting confused by the multitude of websites doing things in completely different ways (completely different annotations, some use of configuration files) it worked and I then modified it using an interceptor/message converter, raw headers and then through a rest template builder.</p>
  
  <p>However, I feel like I really have no idea how or why it worked, even though I wrote a fair bit of code to get it all working, including Basic authentication, in 4 different ways. It just magically worked, and I don't like it: for example, if I wanted to add more stuff that wasn't 'boot' based, how would I do it, or what are all the annotations doing and why are they required, e.g. <code>@SpringBootApplication</code>, <code>@Configuration</code>, or why are some classes <code>@Bean</code> and others not).</p>
  
  <p>To cut a long story short, spring is a massive framework (the website listing the packages takes over a page by itself), should I really be learning spring core/framework before anything else, then maybe spring MVC or spring web services before learning boot?</p>
  
  <p>I can find many resources on teaching me the various packages, but none that tells me why they work or where to really start and specifically nothing will tell me how the packages interlink. It's quite overwhelming.</p>
  
  <p>I expect this will get closed down as not constructive, but it seemed to be the best place to get an answer on Spring.</p>