<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shreya Karka</title>
    <description>The latest articles on DEV Community by Shreya Karka (@shreya_karka).</description>
    <link>https://dev.to/shreya_karka</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4092901%2F6e58fa1d-89b9-4929-a8a8-da5fdda82495.png</url>
      <title>DEV Community: Shreya Karka</title>
      <link>https://dev.to/shreya_karka</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shreya_karka"/>
    <language>en</language>
    <item>
      <title>🚀 Spring Boot Learning Series — Episode 3 | Spring Boot</title>
      <dc:creator>Shreya Karka</dc:creator>
      <pubDate>Fri, 28 Aug 2026 19:14:18 +0000</pubDate>
      <link>https://dev.to/shreya_karka/spring-boot-learning-series-episode-3-spring-boot-18ll</link>
      <guid>https://dev.to/shreya_karka/spring-boot-learning-series-episode-3-spring-boot-18ll</guid>
      <description>&lt;h2&gt;
  
  
  Episode 3 | Spring Boot | Auto-Configuration, Starters &amp;amp; How the Application Starts
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://dev.to/shreya_karka/spring-boot-learning-series-episode-1-14mf"&gt;Episode 1&lt;/a&gt; covered &lt;strong&gt;why Spring exists&lt;/strong&gt; — avoiding tight coupling. &lt;a href="https://dev.to/shreya_karka/spring-boot-learning-series-episode-2-spring-core-4db"&gt;Episode 2&lt;/a&gt; covered &lt;strong&gt;how Spring manages your app&lt;/strong&gt;: Component Scanning finds your classes, the Spring Container creates Beans from them, and Dependency Injection wires those Beans together.&lt;/p&gt;

&lt;p&gt;That's all &lt;em&gt;Spring&lt;/em&gt;. Now comes the question that actually kicked off this whole series:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If Spring already does all of this, what does Spring Boot actually add on top?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's what this episode is about — not new concepts, but the layer that makes the Episode 2 machinery easier to switch on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔑 Keywords → 🧠 Understand → 💡 Why? → 💻 Practice → 🎯 Interview Questions → 🛠️ Project&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 Keywords for This Episode
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Starter Dependencies&lt;/li&gt;
&lt;li&gt;Auto-configuration&lt;/li&gt;
&lt;li&gt;Embedded Server (Tomcat)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@SpringBootApplication&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SpringApplication.run()&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1️⃣ Starter Dependencies
&lt;/h2&gt;

&lt;p&gt;Say you're building a REST API. To do that, you actually need several separate libraries working together — one to handle incoming HTTP requests, one for REST controllers, one for converting Java objects to JSON, one to run an embedded server, and Spring's own MVC library to tie it together.&lt;/p&gt;

&lt;p&gt;Without Spring Boot, you'd have to know each of these libraries by name, add them one by one to your build file, and make sure their versions are compatible with each other. That's easy to get wrong, and honestly, most developers building a web app need the &lt;em&gt;same&lt;/em&gt; set of libraries every time.&lt;/p&gt;

&lt;p&gt;Spring Boot solves this with a &lt;strong&gt;starter&lt;/strong&gt; — a single dependency that pulls in a whole bundle of commonly-needed libraries for a specific type of application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.springframework.boot&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;spring-boot-starter-web&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add this one line, and you get Spring MVC, JSON support, and embedded server support all at once, with versions Spring Boot has already verified work together.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spring-boot-starter-web
        ↓
   Spring MVC + JSON support + embedded server support
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact list of libraries inside a starter can change slightly between Spring Boot versions — so don't try to memorize it. Just remember the idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A starter is a pre-packaged, version-matched bundle of dependencies for a specific type of application, so you don't have to assemble it yourself.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2️⃣ Auto-Configuration
&lt;/h2&gt;

&lt;p&gt;Once you've added &lt;code&gt;spring-boot-starter-web&lt;/code&gt;, Spring Boot can see you have web-related libraries on your classpath. But having the libraries available isn't the same as having them &lt;em&gt;configured&lt;/em&gt; — normally you'd still need to set up things like how incoming requests get routed, how JSON gets converted, and so on.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;auto-configuration&lt;/strong&gt; comes in. Spring Boot looks at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which dependencies you've added,&lt;/li&gt;
&lt;li&gt;what you've already configured yourself,&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and then automatically sets up the common pieces of infrastructure for you, using sensible default settings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add starter-web
      ↓
Spring Boot sees web-related dependencies on the classpath
      ↓
Auto-configuration kicks in
      ↓
Common web infrastructure is configured with sane defaults
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Important beginner clarification:&lt;/strong&gt; this does &lt;em&gt;not&lt;/em&gt; mean Spring Boot configures absolutely everything for you with no say in the matter. It means Spring Boot gives you a reasonable starting point automatically — and if your application needs something different, you can still override any of it yourself. Auto-configuration is a head start, not a lock-in.&lt;/p&gt;




&lt;h2&gt;
  
  
  3️⃣ Embedded Server: Tomcat
&lt;/h2&gt;

&lt;p&gt;Any web application needs something listening for incoming HTTP requests — a server. Traditionally, that server is installed and configured separately from your application code, and then your finished application is deployed &lt;em&gt;onto&lt;/em&gt; that server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So what actually is Tomcat?&lt;/strong&gt; Tomcat is a &lt;strong&gt;Java web server and servlet container&lt;/strong&gt; — a piece of software written to do one job: receive HTTP requests, hand them off to the right part of your Java application to process, and send the response back. It's been the default, most widely-used server for Java web apps for years, which is why Spring Boot picked it as its default embedded option (though it's not the only one — Jetty and Undertow are alternatives).&lt;/p&gt;

&lt;p&gt;Spring Boot simplifies working with Tomcat by &lt;strong&gt;packaging the server inside your application itself&lt;/strong&gt;. This is called an &lt;strong&gt;embedded server&lt;/strong&gt; — instead of installing Tomcat separately and deploying your app to it, Tomcat comes bundled with your app and starts automatically when your app starts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You run your Spring Boot app
            ↓
Spring Boot application starts
            ↓
Embedded Tomcat starts along with it
            ↓
Tomcat is now listening for HTTP requests
            ↓
Your application is reachable, usually at localhost:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's why, the first time you run a Spring Boot web app, you'll see it become available on a port immediately — no separate server setup was needed. (That port number is configurable if you don't want 8080.)&lt;/p&gt;

&lt;p&gt;One distinction that comes up often in interviews:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Spring Boot is not Tomcat.&lt;/strong&gt; Spring Boot is the framework/tooling that simplifies building and running your application. Tomcat is just the specific embedded server it happens to bundle in for you — you could swap it for a different one (like Jetty) if you needed to.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  4️⃣ &lt;code&gt;@SpringBootApplication&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Now let's look at something you'll see on literally every Spring Boot application's main class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@SpringBootApplication&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SupportApplication&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's easy to treat this as "magic" and move on — but it's worth knowing it's not actually one single mechanism. It's really three separate Spring annotations bundled together into one:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Annotation&lt;/th&gt;
&lt;th&gt;What it actually does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@Configuration&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Marks this class as a source of Spring configuration — Spring knows to look here for setup instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@EnableAutoConfiguration&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Switches on the auto-configuration behavior described in section 2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@ComponentScan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tells Spring to scan your packages for classes annotated with &lt;code&gt;@Component&lt;/code&gt;, &lt;code&gt;@Service&lt;/code&gt;, &lt;code&gt;@Repository&lt;/code&gt;, &lt;code&gt;@Controller&lt;/code&gt;, &lt;code&gt;@RestController&lt;/code&gt;, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That third one, &lt;code&gt;@ComponentScan&lt;/code&gt;, is the direct link back to Episode 2. Remember: Component Scanning is what &lt;em&gt;finds&lt;/em&gt; your classes so the Spring Container can turn them into Beans. So &lt;code&gt;@SpringBootApplication&lt;/code&gt; isn't introducing some new discovery mechanism — it's flipping the switch on the exact Component Scanning process from Episode 2, plus turning on auto-configuration at the same time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;In short: &lt;code&gt;@SpringBootApplication&lt;/code&gt; = "treat this as configuration" + "auto-configure what you can" + "go find my components." One annotation, three jobs.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  5️⃣ &lt;code&gt;SpringApplication.run()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The other line you'll find in every Spring Boot app:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;SpringApplication&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;SupportApplication&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a completely ordinary Java &lt;code&gt;main()&lt;/code&gt; method — the actual entry point when you run the program. Inside it, this one call is what starts your entire Spring Boot application.&lt;/p&gt;

&lt;p&gt;Here's what happens, step by step, when it runs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SpringApplication.run() is called
            ↓
Spring Boot starts up
            ↓
The ApplicationContext (Spring Container) is created
            ↓
Auto-configuration is applied
            ↓
Component Scanning runs and finds your classes
            ↓
Beans are created from those classes
            ↓
Dependencies are resolved and injected into each Bean
            ↓
The embedded Tomcat server starts
            ↓
Your application is fully up and ready to handle requests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is genuinely useful to walk through slowly at least once, because it's the moment where &lt;em&gt;everything&lt;/em&gt; from Episodes 2 and 3 actually happens — the Container, the Beans, the Dependency Injection, and the embedded server all get set in motion by this single line.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 How Episodes 2 and 3 Connect
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Episode 2 (Spring Core)&lt;/strong&gt; explained the underlying machinery: IoC → Spring Container → Beans → Dependency Injection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Episode 3 (Spring Boot)&lt;/strong&gt; explains how that machinery gets switched on with minimal effort: Starters give you the right dependencies → Auto-configuration sets up sensible defaults → &lt;code&gt;@SpringBootApplication&lt;/code&gt; turns on Component Scanning and auto-config → &lt;code&gt;SpringApplication.run()&lt;/code&gt; fires off the whole startup sequence, including the embedded server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So Spring Boot isn't a separate framework layered awkwardly on top of Spring — it's automation &lt;em&gt;for&lt;/em&gt; the exact concepts from Episode 2.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Interview Check
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What problem do starter dependencies solve, and why not just add libraries individually?&lt;/li&gt;
&lt;li&gt;What does auto-configuration actually do — and importantly, what does it &lt;em&gt;not&lt;/em&gt; do?&lt;/li&gt;
&lt;li&gt;Why is an embedded server useful for a Spring Boot app? Is Tomcat the same thing as Spring Boot?&lt;/li&gt;
&lt;li&gt;What are the three annotations that make up &lt;code&gt;@SpringBootApplication&lt;/code&gt;, and which one connects back to Component Scanning?&lt;/li&gt;
&lt;li&gt;Walk through, step by step, what happens when &lt;code&gt;SpringApplication.run()&lt;/code&gt; is called.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Applying This to the Project
&lt;/h2&gt;

&lt;p&gt;For the &lt;strong&gt;Employee Support / Service Request&lt;/strong&gt; app, this episode's concepts translate directly into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding &lt;code&gt;spring-boot-starter-web&lt;/code&gt; as a dependency&lt;/li&gt;
&lt;li&gt;Annotating &lt;code&gt;TicketController&lt;/code&gt;, &lt;code&gt;TicketService&lt;/code&gt;, and &lt;code&gt;TicketRepository&lt;/code&gt; so Component Scanning can find them&lt;/li&gt;
&lt;li&gt;Letting &lt;code&gt;@SpringBootApplication&lt;/code&gt; and &lt;code&gt;SpringApplication.run()&lt;/code&gt; handle scanning, Bean creation, dependency injection, and starting the embedded server — with no manual wiring required from me&lt;/li&gt;
&lt;/ul&gt;




</description>
      <category>java</category>
      <category>learning</category>
      <category>springboot</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🌱 Spring Boot Learning Series — Episode 2 | Spring Core</title>
      <dc:creator>Shreya Karka</dc:creator>
      <pubDate>Fri, 28 Aug 2026 18:36:10 +0000</pubDate>
      <link>https://dev.to/shreya_karka/spring-boot-learning-series-episode-2-spring-core-4db</link>
      <guid>https://dev.to/shreya_karka/spring-boot-learning-series-episode-2-spring-core-4db</guid>
      <description>&lt;h2&gt;
  
  
  Episode 2 | Spring Core | Understanding IoC, Dependency Injection &amp;amp; Beans
&lt;/h2&gt;

&lt;p&gt;In &lt;a href="https://dev.to/shreya_karka/spring-boot-learning-series-episode-1-14mf"&gt;Episode 1&lt;/a&gt;, I covered the &lt;strong&gt;WHY behind Spring&lt;/strong&gt; — tight coupling, and how Spring takes over creating and providing objects (IoC + DI) instead of classes creating their own dependencies.&lt;/p&gt;

&lt;p&gt;This episode picks up from there with the parts I hadn't covered yet: &lt;strong&gt;how&lt;/strong&gt; Spring actually does that under the hood — Beans, the Spring Container, and Component Scanning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔑 Keywords → 🧠 Understand → 💡 Why? → 💻 Practice → 🎯 Interview Questions → 🛠️ Project&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 Keywords for This Episode
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;IoC &amp;amp; Dependency Injection (quick recap)&lt;/li&gt;
&lt;li&gt;Spring Bean&lt;/li&gt;
&lt;li&gt;Spring Container / ApplicationContext&lt;/li&gt;
&lt;li&gt;Component Scanning&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1️⃣ Quick Recap: IoC &amp;amp; Dependency Injection
&lt;/h2&gt;

&lt;p&gt;From Episode 1: instead of a class creating its own dependency —&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TicketService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;TicketRepository&lt;/span&gt; &lt;span class="n"&gt;repository&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;TicketService&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;repository&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TicketRepository&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;— Spring creates the dependency and hands it to the class. That's &lt;strong&gt;Inversion of Control (IoC)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In code, this usually looks like a constructor parameter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TicketService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="nc"&gt;TicketRepository&lt;/span&gt; &lt;span class="n"&gt;repository&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;TicketService&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;TicketRepository&lt;/span&gt; &lt;span class="n"&gt;repository&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;repository&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;repository&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;TicketService&lt;/code&gt; no longer says &lt;em&gt;"let me create a TicketRepository."&lt;/em&gt; It says &lt;em&gt;"I need a TicketRepository"&lt;/em&gt; — and Spring supplies one. That act of supplying it is &lt;strong&gt;Dependency Injection (DI)&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;IoC&lt;/strong&gt; = who's in control of creating/managing objects → Spring.&lt;br&gt;
&lt;strong&gt;DI&lt;/strong&gt; = how a class actually receives what it needs → passed in, not self-created.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the recap. Now — where do these objects Spring creates actually come from, and where do they live?&lt;/p&gt;




&lt;h2&gt;
  
  
  2️⃣ Spring Bean — what Spring actually manages
&lt;/h2&gt;

&lt;p&gt;When Spring creates and manages an object for you, that object is called a &lt;strong&gt;Bean&lt;/strong&gt;. This is the vocabulary you'll see everywhere in Spring code and docs, so it's worth being precise about it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Service&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TicketService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;@Service&lt;/code&gt; annotation is a signal to Spring: &lt;em&gt;"this class should be managed by you."&lt;/em&gt; When Spring creates an object from this class, that specific object — the one Spring created and is tracking — is a &lt;strong&gt;Bean&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Compare that to doing it yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;TicketService&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TicketService&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This &lt;code&gt;service&lt;/code&gt; object is a completely ordinary Java object. Spring has no idea it exists. It's &lt;strong&gt;not&lt;/strong&gt; a Bean — Spring can't inject it anywhere, manage its lifecycle, or wire its dependencies, because Spring never created it and doesn't know about it.&lt;/p&gt;

&lt;p&gt;So the distinguishing line is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A Spring Bean isn't a special kind of class — it's an object that Spring itself created and is managing.&lt;/strong&gt; The exact same class can produce a Bean (if Spring creates it) or a plain object (if you create it with &lt;code&gt;new&lt;/code&gt;).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This matters because dependency injection only works on Beans. If &lt;code&gt;TicketRepository&lt;/code&gt; isn't a Bean, Spring has nothing to inject into &lt;code&gt;TicketService&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  3️⃣ Spring Container (a.k.a. ApplicationContext)
&lt;/h2&gt;

&lt;p&gt;So Beans need to be created and tracked &lt;em&gt;somewhere&lt;/em&gt;. That "somewhere" is the &lt;strong&gt;Spring Container&lt;/strong&gt; — in practice, you'll most often see it called the &lt;strong&gt;ApplicationContext&lt;/strong&gt;, which is Spring's concrete implementation of the container.&lt;/p&gt;

&lt;p&gt;Concretely, the Container is responsible for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Creating&lt;/strong&gt; Bean instances (calling the constructor, essentially)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storing&lt;/strong&gt; references to every Bean it creates, so it can find them again&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Figuring out each Bean's dependencies&lt;/strong&gt; — e.g. it sees &lt;code&gt;TicketService&lt;/code&gt; needs a &lt;code&gt;TicketRepository&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Injecting&lt;/strong&gt; those dependencies — passing the right Bean into the right constructor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managing the Bean's lifecycle&lt;/strong&gt; — when it's created, and when it's cleaned up when the app shuts down&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the flow when your app starts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;App starts
     ↓
Spring Container starts up
     ↓
Container creates TicketRepository Bean
     ↓
Container creates TicketService Bean
     ↓
Container sees TicketService needs a TicketRepository
     ↓
Container injects the TicketRepository Bean into TicketService
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You never call &lt;code&gt;new TicketService(new TicketRepository())&lt;/code&gt; yourself — the Container does this wiring for the entire application, for every Bean, automatically.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Spring Container / ApplicationContext = the running system inside your app that creates every Bean, keeps track of them, and wires their dependencies together.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  4️⃣ Component Scanning — how the Container finds classes to manage
&lt;/h2&gt;

&lt;p&gt;This raises an obvious question: the Container can't manage a class it doesn't know exists. So how does it discover &lt;code&gt;TicketService&lt;/code&gt; in the first place?&lt;/p&gt;

&lt;p&gt;That's &lt;strong&gt;Component Scanning&lt;/strong&gt;. When your Spring app starts, Spring scans your project's packages looking for classes marked with specific annotations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Component   — generic, "let Spring manage this"
@Service     — for service/business-logic classes
@Repository  — for data-access classes
@Controller / @RestController — for web-layer classes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are all technically variations of &lt;code&gt;@Component&lt;/code&gt; — Spring treats them the same way for scanning purposes, they just also carry extra meaning (e.g. &lt;code&gt;@Repository&lt;/code&gt; also tells Spring to translate database exceptions).&lt;/p&gt;

&lt;p&gt;Concretely, the process looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spring app starts
        ↓
Component Scanning runs
        ↓
Scans your packages for @Component-annotated classes
        ↓
Finds @Service TicketService
        ↓
Registers it as a component Spring should manage
        ↓
Spring Container creates a Bean from it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without Component Scanning finding the class first, none of the rest happens — the Container can only create and inject Beans for classes it has actually discovered and registered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component Scanning finds the classes. The Container creates and wires the Beans.&lt;/strong&gt; Two separate jobs, both needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Putting It All Together
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Component Scanning finds @Component classes
              ↓
Spring Container creates a Bean for each one
              ↓
Container figures out each Bean's dependencies
              ↓
Container injects those dependencies (DI)
              ↓
Your classes never had to create anything themselves (IoC)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the full picture: IoC is the &lt;em&gt;principle&lt;/em&gt; (Spring is in control), DI is &lt;em&gt;how a class receives what it needs&lt;/em&gt;, Beans are &lt;em&gt;what&lt;/em&gt; gets created and managed, the Container is &lt;em&gt;where&lt;/em&gt; that happens, and Component Scanning is &lt;em&gt;how&lt;/em&gt; the Container finds what to manage.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Interview Check
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What is a Spring Bean, and how is it different from a plain Java object created with &lt;code&gt;new&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;What is the Spring Container (ApplicationContext) actually responsible for?&lt;/li&gt;
&lt;li&gt;How does Spring discover which classes should become Beans?&lt;/li&gt;
&lt;li&gt;If a class isn't found by Component Scanning, can it still be injected as a dependency? Why not?&lt;/li&gt;
&lt;li&gt;What's the relationship between &lt;code&gt;@Component&lt;/code&gt;, &lt;code&gt;@Service&lt;/code&gt;, &lt;code&gt;@Repository&lt;/code&gt;, and &lt;code&gt;@Controller&lt;/code&gt;?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ Applying This to the Project
&lt;/h2&gt;

&lt;p&gt;Time to take this out of theory. In the &lt;strong&gt;Employee Support / Service Request&lt;/strong&gt; app, I'll annotate the classes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@RestController TicketController
@Service TicketService
@Repository TicketRepository
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and let Component Scanning + the Container find them, create their Beans, and wire the dependencies — instead of me creating any of it manually.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 &lt;a href="https://dev.to/shreya_karka/spring-boot-learning-series-episode-3-spring-boot-18ll"&gt;Next Episode&lt;/a&gt; — Spring Boot
&lt;/h2&gt;

&lt;p&gt;With the Spring Core foundation in place, next I'll move into the Spring Boot side:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Auto-configuration&lt;/li&gt;
&lt;li&gt;Starter Dependencies&lt;/li&gt;
&lt;li&gt;Embedded Server / Tomcat&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@SpringBootApplication&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SpringApplication.run()&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Understand → Practice → Interview → Build.&lt;/strong&gt;&lt;br&gt;
One concept at a time. One project throughout the journey.&lt;/p&gt;

</description>
      <category>springcore</category>
      <category>springboot</category>
      <category>java</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🚀 Spring Boot Learning Series — Episode 1</title>
      <dc:creator>Shreya Karka</dc:creator>
      <pubDate>Fri, 28 Aug 2026 06:24:15 +0000</pubDate>
      <link>https://dev.to/shreya_karka/spring-boot-learning-series-episode-1-14mf</link>
      <guid>https://dev.to/shreya_karka/spring-boot-learning-series-episode-1-14mf</guid>
      <description>&lt;h3&gt;
  
  
  Episode 1 | Spring vs Spring Boot — The Foundation
&lt;/h3&gt;

&lt;p&gt;I'm starting a Spring Boot learning series where I'll follow this approach:&lt;br&gt;
&lt;strong&gt;🔑 Keywords → 🧠 Understand → 💡 Why? → 💻 Practice → 🎯 Interview Questions → 🛠️ Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For Episode 1, I started with the most basic question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;h2&gt;
  
  
  👉 What is Spring, and why do we need Spring Boot?
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  🔑 Keywords for This Episode
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Spring Framework&lt;/li&gt;
&lt;li&gt;Spring Boot&lt;/li&gt;
&lt;li&gt;Tight Coupling&lt;/li&gt;
&lt;li&gt;Loose Coupling&lt;/li&gt;
&lt;li&gt;Dependency&lt;/li&gt;
&lt;li&gt;IoC — Inversion of Control&lt;/li&gt;
&lt;li&gt;Dependency Injection&lt;/li&gt;
&lt;li&gt;Bean&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1️⃣ What Is Spring Framework?
&lt;/h2&gt;

&lt;p&gt;Spring Framework is a Java framework used to build applications, especially backend and enterprise applications.&lt;br&gt;
But simply saying "Spring is a Java framework" doesn't really explain why we use it.&lt;br&gt;
The better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;👉 Why do we need Spring?&lt;br&gt;
Let's take a simple example from the application I'll be building while learning Spring Boot: an &lt;strong&gt;Employee Support / Service Request&lt;/strong&gt; application.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A simplified structure might look like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;&lt;br&gt;
TicketController&lt;br&gt;
       ↓&lt;br&gt;
  TicketService&lt;br&gt;
       ↓&lt;br&gt;
TicketRepository&lt;br&gt;
       ↓&lt;br&gt;
    Database&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Here, &lt;code&gt;TicketService&lt;/code&gt; needs &lt;code&gt;TicketRepository&lt;/code&gt; to perform its job.&lt;br&gt;
In plain Java, we could create that object ourselves:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;java&lt;br&gt;
TicketRepository repository = new TicketRepository();&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This works perfectly fine for a small application.&lt;br&gt;
But as an application grows, we can have hundreds of classes, and many classes may depend on other classes.&lt;br&gt;
If every class is responsible for creating the objects it needs, the classes become strongly connected to their dependencies.&lt;br&gt;
This is called:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔴 Tight Coupling
&lt;/h3&gt;




&lt;h2&gt;
  
  
  2️⃣ What Is Tight Coupling?
&lt;/h2&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;&lt;br&gt;
TicketService&lt;br&gt;
      ↓&lt;br&gt;
   creates&lt;br&gt;
      ↓&lt;br&gt;
TicketRepository&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;TicketService&lt;/code&gt; is directly responsible for creating &lt;code&gt;TicketRepository&lt;/code&gt;.&lt;br&gt;
Now imagine we want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the implementation&lt;/li&gt;
&lt;li&gt;Replace the dependency&lt;/li&gt;
&lt;li&gt;Use a mock repository for testing
Because &lt;code&gt;TicketService&lt;/code&gt; directly creates it, making those changes becomes harder.
This is where:
### 🟢 Loose Coupling
becomes important.
We want a class to focus on:
&amp;gt; "What do I need?"
rather than:
&amp;gt; "How do I create everything I need?"&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3️⃣ How Does Spring Help?
&lt;/h2&gt;

&lt;p&gt;Spring helps us manage objects and their dependencies.&lt;br&gt;
Instead of:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;&lt;br&gt;
TicketService&lt;br&gt;
      ↓&lt;br&gt;
   creates&lt;br&gt;
      ↓&lt;br&gt;
TicketRepository&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;we can have:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;&lt;br&gt;
Spring&lt;br&gt;
  ↓&lt;br&gt;
creates &amp;amp; manages&lt;br&gt;
  ↓&lt;br&gt;
TicketRepository&lt;br&gt;
  ↓&lt;br&gt;
provides it to&lt;br&gt;
  ↓&lt;br&gt;
TicketService&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This leads us to two important Spring concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔹 &lt;strong&gt;IoC&lt;/strong&gt; — Inversion of Control&lt;/li&gt;
&lt;li&gt;🔹 &lt;strong&gt;Dependency Injection&lt;/strong&gt;
&lt;strong&gt;IoC&lt;/strong&gt; means the responsibility for creating and managing objects is moved from our classes to Spring.
&lt;strong&gt;Dependency Injection&lt;/strong&gt; is how Spring provides the dependencies that a class needs.
So the basic idea is:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;&lt;br&gt;
Our classes need objects&lt;br&gt;
         ↓&lt;br&gt;
Spring manages those objects&lt;br&gt;
         ↓&lt;br&gt;
Spring provides them where needed&lt;br&gt;
         ↓&lt;br&gt;
Classes become more loosely coupled&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I'll dive deeper into these concepts in the next episode.&lt;/p&gt;




&lt;h2&gt;
  
  
  🫘 What Is a Spring Bean?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;Bean is simply an object that is created and managed by the Spring Container.&lt;/strong&gt;&lt;br&gt;
For example, if Spring creates and manages a &lt;code&gt;TicketService&lt;/code&gt; object, that object is a &lt;strong&gt;Spring Bean&lt;/strong&gt;.&lt;br&gt;
Think of it like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;&lt;br&gt;
TicketService class&lt;br&gt;
       ↓&lt;br&gt;
Spring creates an object&lt;br&gt;
       ↓&lt;br&gt;
Spring manages that object&lt;br&gt;
       ↓&lt;br&gt;
Spring Bean&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4️⃣ Then What Is Spring Boot?
&lt;/h2&gt;

&lt;p&gt;Once I understood Spring, I had another question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"If Spring already helps us build applications, why do we need Spring Boot?"&lt;br&gt;
Spring applications can require configuration and setup.&lt;br&gt;
&lt;strong&gt;Spring Boot&lt;/strong&gt; was created to make building and running Spring applications easier.&lt;br&gt;
The important thing to remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Spring Boot does &lt;strong&gt;NOT&lt;/strong&gt; replace Spring.&lt;/li&gt;
&lt;li&gt;✅ Spring Boot is built &lt;strong&gt;ON TOP OF&lt;/strong&gt; the Spring Framework.
Think of it like this:&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;&lt;br&gt;
Spring Framework&lt;br&gt;
      ↓&lt;br&gt;
Core Spring functionality&lt;br&gt;
      ↓&lt;br&gt;
Spring Boot&lt;br&gt;
      ↓&lt;br&gt;
Easier setup &amp;amp; development&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Spring provides the foundation.&lt;br&gt;
Spring Boot reduces the amount of configuration and setup we need.&lt;/p&gt;




&lt;h2&gt;
  
  
  5️⃣ Spring vs Spring Boot
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔵 Spring Framework
&lt;/h3&gt;

&lt;p&gt;Spring provides the core functionality for building applications, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IoC&lt;/li&gt;
&lt;li&gt;Dependency Injection&lt;/li&gt;
&lt;li&gt;Bean management&lt;/li&gt;
&lt;li&gt;Managing application objects and dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟢 Spring Boot
&lt;/h3&gt;

&lt;p&gt;Spring Boot builds on Spring and simplifies application development through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-configuration&lt;/li&gt;
&lt;li&gt;Starter dependencies&lt;/li&gt;
&lt;li&gt;Embedded servers&lt;/li&gt;
&lt;li&gt;Sensible defaults&lt;/li&gt;
&lt;li&gt;Less manual configuration
The simplest way I remember it:
&amp;gt; &lt;strong&gt;SPRING = FOUNDATION&lt;/strong&gt;
&amp;gt; &lt;strong&gt;SPRING BOOT = SIMPLIFIED WAY TO BUILD &amp;amp; RUN SPRING APPLICATIONS&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6️⃣ Why Is Spring Boot Easier?
&lt;/h2&gt;

&lt;p&gt;Imagine we want to build a web application.&lt;br&gt;
There can be a lot of configuration and dependency setup involved. Spring Boot simplifies this.&lt;br&gt;
For example, we can use &lt;strong&gt;starter dependencies&lt;/strong&gt; for common application requirements. Spring Boot can also &lt;strong&gt;automatically configure&lt;/strong&gt; many things based on our application's dependencies and configuration.&lt;br&gt;
And for web applications, Spring Boot can provide an &lt;strong&gt;embedded server&lt;/strong&gt; such as Tomcat.&lt;br&gt;
So instead of spending a lot of time setting up the infrastructure, we can focus more on building the actual application.&lt;br&gt;
I'll explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto-configuration&lt;/li&gt;
&lt;li&gt;Starter Dependencies&lt;/li&gt;
&lt;li&gt;Embedded Server&lt;/li&gt;
&lt;li&gt;Tomcat
in the Spring Boot episode.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  7️⃣ The Big Picture
&lt;/h2&gt;

&lt;p&gt;The biggest thing I learned in Episode 1:&lt;br&gt;
&lt;strong&gt;Spring and Spring Boot aren't two completely separate technologies. They are connected.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;&lt;code&gt;&lt;br&gt;
Spring Framework&lt;br&gt;
       ↓&lt;br&gt;
Core Spring functionality&lt;br&gt;
       ↓&lt;br&gt;
IoC + Dependency Injection&lt;br&gt;
       ↓&lt;br&gt;
Object &amp;amp; dependency management&lt;br&gt;
       ↓&lt;br&gt;
Spring Boot&lt;br&gt;
       ↓&lt;br&gt;
Simplifies configuration &amp;amp; setup&lt;br&gt;
       ↓&lt;br&gt;
Easier Spring application development&lt;br&gt;
\&lt;/code&gt;&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Before learning individual annotations, I wanted to understand the &lt;strong&gt;WHY&lt;/strong&gt; behind Spring Boot.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 NEXT 2 EPISODES
&lt;/h2&gt;

&lt;p&gt;This episode was just the foundation.&lt;br&gt;
I intentionally introduced some keywords without going deep into them because I want to learn each concept separately.&lt;/p&gt;

&lt;h3&gt;
  
  
  🌱&lt;a href="https://dev.to/shreya_karka/spring-boot-learning-series-episode-2-spring-core-4db"&gt; Episode 2 &lt;/a&gt;— Spring Core
&lt;/h3&gt;

&lt;p&gt;We'll break down:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;IoC — Inversion of Control&lt;/li&gt;
&lt;li&gt;Dependency&lt;/li&gt;
&lt;li&gt;Dependency Injection&lt;/li&gt;
&lt;li&gt;Spring Container&lt;/li&gt;
&lt;li&gt;Bean&lt;/li&gt;
&lt;li&gt;ApplicationContext&lt;/li&gt;
&lt;li&gt;Component Scanning&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🚀 &lt;a href="https://dev.to/shreya_karka/spring-boot-learning-series-episode-3-spring-boot-18ll"&gt;Episode 3&lt;/a&gt; — Spring Boot
&lt;/h3&gt;

&lt;p&gt;We'll break down:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Auto-configuration&lt;/li&gt;
&lt;li&gt;Starter Dependencies&lt;/li&gt;
&lt;li&gt;Embedded Server&lt;/li&gt;
&lt;li&gt;Tomcat&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@SpringBootApplication&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SpringApplication.run()&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So if you saw some of these keywords in Episode 1 and thought, &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"What does that mean?"&lt;/strong&gt;&lt;br&gt;
That's exactly what the next two episodes are for.&lt;br&gt;
One concept at a time. One project throughout the journey.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>springboot</category>
      <category>spring</category>
      <category>beginners</category>
      <category>foundations</category>
    </item>
    <item>
      <title>Hey, I'm new here! Documenting my Java, Spring Boot &amp; Applied AI learning journey 👋</title>
      <dc:creator>Shreya Karka</dc:creator>
      <pubDate>Mon, 24 Aug 2026 20:13:41 +0000</pubDate>
      <link>https://dev.to/shreya_karka/hey-im-new-here-documenting-my-java-spring-boot-applied-ai-learning-journey-3i75</link>
      <guid>https://dev.to/shreya_karka/hey-im-new-here-documenting-my-java-spring-boot-applied-ai-learning-journey-3i75</guid>
      <description>&lt;p&gt;Hi everyone! I'm excited to join the DEV community.&lt;/p&gt;

&lt;p&gt;What I'm doing: I'm learning Java and &lt;a href="https://dev.to/shreya_karka/spring-boot-learning-series-episode-1-14mf"&gt;Spring Boot&lt;/a&gt;, and also picking up AI/Machine Learning fundamentals. Instead of keeping notes to myself, I'm posting them here as a series — brief, beginner-friendly notes on each topic as I learn it, so anyone starting from scratch can follow along and learn with me.&lt;/p&gt;

&lt;p&gt;No dense definitions, just clear, simple takeaways from what I actually learned that day. I'll be running two ongoing series: Spring Boot Journey and AI Learning Log.&lt;/p&gt;

&lt;p&gt;If you're learning Java, Spring Boot, or AI too — follow along, share your own notes, or just say hi. Let's learn together!&lt;/p&gt;

&lt;p&gt;#java #springboot #ai #beginners&lt;/p&gt;

</description>
      <category>ai</category>
      <category>beginners</category>
      <category>java</category>
      <category>springboot</category>
    </item>
  </channel>
</rss>
