<?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: Yongsik Yun</title>
    <description>The latest articles on DEV Community by Yongsik Yun (@comnori).</description>
    <link>https://dev.to/comnori</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F146049%2F0489555a-5873-4749-a58d-989a587fe08b.jpeg</url>
      <title>DEV Community: Yongsik Yun</title>
      <link>https://dev.to/comnori</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/comnori"/>
    <language>en</language>
    <item>
      <title>Four Multipliers for Using AI Well: My Working Model</title>
      <dc:creator>Yongsik Yun</dc:creator>
      <pubDate>Sat, 30 Aug 2025 14:01:01 +0000</pubDate>
      <link>https://dev.to/comnori/four-multipliers-for-using-ai-well-my-working-model-2mjn</link>
      <guid>https://dev.to/comnori/four-multipliers-for-using-ai-well-my-working-model-2mjn</guid>
      <description>&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;I don’t think “good prompts” are enough. In my experience, outcomes improve when I understand &lt;strong&gt;what my keywords actually mean&lt;/strong&gt; and can &lt;strong&gt;roughly predict&lt;/strong&gt; what the model will return.&lt;/p&gt;

&lt;p&gt;This post shares my current model in a report style, but the views are personal and context-dependent.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters (my take)
&lt;/h2&gt;

&lt;p&gt;I keep returning to four areas that change results the most:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tool Understanding&lt;/strong&gt;&lt;br&gt;
Knowing model limits, context management, and I/O formats reduces avoidable iteration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Requirements Understanding&lt;/strong&gt;&lt;br&gt;
Clear problem statements, success criteria, and non-functional needs (security, performance, operations) keep direction stable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Design &amp;amp; Architecture Understanding&lt;/strong&gt;&lt;br&gt;
Boundary setting, dependency control, and explaining trade-offs lower change cost.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Organization &amp;amp; Process Understanding&lt;/strong&gt;&lt;br&gt;
Roles, collaboration flow, deployment and operations realities increase execution efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The 4× model
&lt;/h2&gt;

&lt;p&gt;I think results behave like a product of four “pillars”:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Outcome ≈
(Depth of prior learning)
× (Understanding of the problem context)
× (Design &amp;amp; architecture skill)
× (Environment awareness: org, infra, process)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If any one term is near zero, the whole outcome drops sharply. That’s what I’ve observed, not a universal law.&lt;/p&gt;




&lt;h2&gt;
  
  
  Human ↔ AI split (what I’m experimenting with)
&lt;/h2&gt;

&lt;p&gt;I’m actively designing how to split work between &lt;strong&gt;AI agents&lt;/strong&gt; and &lt;strong&gt;myself&lt;/strong&gt; across the four pillars. It’s a work in progress.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pillar&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;th&gt;Delegate to AI agents&lt;/th&gt;
&lt;th&gt;Keep human-led (for now)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tool&lt;/td&gt;
&lt;td&gt;Prompt scaffolds, format transforms, test data generation&lt;/td&gt;
&lt;td&gt;Patterned refactors, doc drafting, spec-to-code skeletons&lt;/td&gt;
&lt;td&gt;Choosing models, context strategy, safety/limits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requirements&lt;/td&gt;
&lt;td&gt;Clarify terms, map examples, validate acceptance criteria&lt;/td&gt;
&lt;td&gt;Requirement clustering, duplicate detection, glossary drafts&lt;/td&gt;
&lt;td&gt;Final problem framing, success metrics, risk acceptance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Design &amp;amp; Arch&lt;/td&gt;
&lt;td&gt;Option listing, RFC skeletons, sequence/state diagrams&lt;/td&gt;
&lt;td&gt;Alternative enumeration, boilerplate architectures&lt;/td&gt;
&lt;td&gt;Final boundary decisions, trade-off ownership&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Org &amp;amp; Process&lt;/td&gt;
&lt;td&gt;Checklists, runbooks, review templates&lt;/td&gt;
&lt;td&gt;Routine updates, status summaries, meeting minutes&lt;/td&gt;
&lt;td&gt;Incentives, role design, escalation paths&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Practical checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Do I know the &lt;strong&gt;model’s constraints&lt;/strong&gt; and how I’ll manage context?&lt;/li&gt;
&lt;li&gt;Are &lt;strong&gt;success criteria and non-functionals&lt;/strong&gt; explicit?&lt;/li&gt;
&lt;li&gt;Can I explain my &lt;strong&gt;trade-offs&lt;/strong&gt; like I would in a design review?&lt;/li&gt;
&lt;li&gt;Does the plan reflect &lt;strong&gt;team roles and deployment reality&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;For each pillar, what is &lt;strong&gt;agent-do&lt;/strong&gt; vs &lt;strong&gt;human-decide&lt;/strong&gt;?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;This is the frame I’m using right now:&lt;br&gt;
&lt;strong&gt;Prior learning × Context understanding × Design skill × Environment awareness.&lt;/strong&gt;&lt;br&gt;
I expect efficiency to drop when any one term weakens. My current focus is to make the &lt;strong&gt;agent/human split&lt;/strong&gt; explicit in each pillar.&lt;/p&gt;

&lt;p&gt;If you use a different split or model, I’d like to learn from it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>architecture</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Guide to Adding Comments to Tables and Columns When Automatically Generating Entities Using ORM in…</title>
      <dc:creator>Yongsik Yun</dc:creator>
      <pubDate>Sun, 18 Feb 2024 17:21:21 +0000</pubDate>
      <link>https://dev.to/comnori/guide-to-adding-comments-to-tables-and-columns-when-automatically-generating-entities-using-orm-in-17i8</link>
      <guid>https://dev.to/comnori/guide-to-adding-comments-to-tables-and-columns-when-automatically-generating-entities-using-orm-in-17i8</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;This document provides a guide on how to add comments to tables and columns when automatically generating entities using ORM in Java backend development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;While developers can understand the meaning of columns through annotations, data engineers must manually check the source code or ask the developer, which can be inconvenient.&lt;/li&gt;
&lt;li&gt;When using annotations and column comments together, there can be issues with framework dependency, decreased efficiency, and human error.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solution
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use the comment attribute introduced in JPA 3.2 to add comments to tables and columns.&lt;/li&gt;
&lt;li&gt;Utilize both Hibernate’s &lt;code&gt;@Comment&lt;/code&gt; annotation and JPA 3.2's comment attribute to enable automatic refactoring for future version upgrades.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Points
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;JPA 3.2’s &lt;code&gt;comment&lt;/code&gt; attribute

&lt;ul&gt;
&lt;li&gt;The comment attribute was added to table and column annotations starting from JPA 3.2.&lt;/li&gt;
&lt;li&gt;This attribute allows you to directly specify descriptions for tables and columns.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hibernate &lt;code&gt;@Comment&lt;/code&gt; annotation

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;@Comment&lt;/code&gt; annotation provided by Hibernate can be used to add descriptions to columns.&lt;/li&gt;
&lt;li&gt;This is useful in environments that do not support JPA 3.2.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Automatic refactoring for future version upgrades

&lt;ul&gt;
&lt;li&gt;Tools like OpenRewrite can be used to automatically convert Hibernate &lt;code&gt;@Comment&lt;/code&gt; annotations to JPA 3.2's &lt;code&gt;comment&lt;/code&gt; attribute.&lt;/li&gt;
&lt;li&gt;This allows for easy code upgrades when Spring Data JPA and Hibernate’s JPA 3.2 versions are supported in the future.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Code Examples
&lt;/h2&gt;

&lt;h3&gt;
  
  
  JPA 3.1 + Hibernate
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Column&lt;/span&gt;  
&lt;span class="nd"&gt;@Comment&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Is locked"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;  
&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;accountNonLocked&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  JPA 3.2
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Column&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;comment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Is locked"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;  
&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;accountNonLocked&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://projects.eclipse.org/projects/ee4j.jpa/releases/3.2"&gt;Jakarta Persistence™ 3.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hibernate.atlassian.net/browse/HHH-17377"&gt;Migrate to JPA 3.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.openrewrite.org/"&gt;OpenRewrite&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>java</category>
      <category>springdatajpa</category>
      <category>hibernates</category>
      <category>jpa</category>
    </item>
    <item>
      <title>How to automatically reload spring boot in vscode</title>
      <dc:creator>Yongsik Yun</dc:creator>
      <pubDate>Wed, 24 Jan 2024 10:29:25 +0000</pubDate>
      <link>https://dev.to/comnori/how-to-automatically-reload-spring-boot-in-vscode-64o</link>
      <guid>https://dev.to/comnori/how-to-automatically-reload-spring-boot-in-vscode-64o</guid>
      <description>&lt;p&gt;When developing a Java project in VSCode, it can be quite inconvenient when Spring reload does not occur after an automatic build. To address this issue, &lt;a href="https://blog.gradle.org/introducing-continuous-build"&gt;Gradle continuous&lt;/a&gt; is commonly used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Terminal 1&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gradle build &lt;span class="nt"&gt;-t&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Terminal 2&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gradle bootRun
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While &lt;code&gt;Terminal 1&lt;/code&gt; only needs to be started once, doing it every time is inconvenient. One solution to this problem is to use the &lt;code&gt;compounds&lt;/code&gt; feature in VSCode's &lt;code&gt;launch&lt;/code&gt;. &lt;code&gt;compounds&lt;/code&gt; allow multiple &lt;code&gt;launch&lt;/code&gt; configurations to be executed as a single unit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"configurations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Spring Boot-BaseApplication"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"java"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"request"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"launch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"cwd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${workspaceFolder}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"mainClass"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"kr.co.findthebest.Application"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"projectName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"workspace"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"envFile"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${workspaceFolder}/.env"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"encoding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"UTF-8"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Run gradle continuous"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node-terminal"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gradle build --warning-mode=all -t --parallel --build-cache --configuration-cache"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"request"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"launch"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"cwd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${workspaceFolder}"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"compounds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Auto build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"configurations"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Run gradle start"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Spring Boot-BaseApplication"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"stopAll"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;By modifying the &lt;code&gt;launch.json&lt;/code&gt; as above, you can create a &lt;code&gt;compounds&lt;/code&gt; named "Auto build."&lt;/p&gt;

&lt;p&gt;Running this &lt;code&gt;compounds&lt;/code&gt; will execute "Run gradle continuous" and "Spring Boot-BaseApplication" sequentially.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This approach eliminates the need to start each terminal individually, streamlining the process.&lt;/p&gt;

&lt;p&gt;Another method involves adding a task to use the &lt;code&gt;preLaunchTask&lt;/code&gt; feature in &lt;code&gt;launch&lt;/code&gt;. However, due to less smooth background pattern matching, this method may reduce the risk of failure in certain situations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;When developing a Java project in VSCode and aiming for automatic build and Spring reload, using &lt;code&gt;compounds&lt;/code&gt; is an effective solution.&lt;/p&gt;

&lt;p&gt;By adopting this method, you can simplify the workflow, reducing cumbersome tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.gradle.org/introducing-continuous-build"&gt;Introducing Continuous Build Execution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.visualstudio.com/docs/editor/debugging#_compound-launch-configurations"&gt;Compound launch configurations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://code.visualstudio.com/docs/editor/tasks"&gt;Integrate with External Tools via Tasks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vscode</category>
      <category>gradle</category>
      <category>spring</category>
    </item>
  </channel>
</rss>
