<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>IDEA - 标签 - YiXuanYun / 亦轩云</title><link>https://home.y1xuanyun.cn/tags/idea/</link><description>IDEA - 标签 - YiXuanYun / 亦轩云</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Wed, 21 Feb 2024 18:00:00 +0800</lastBuildDate><atom:link href="https://home.y1xuanyun.cn/tags/idea/" rel="self" type="application/rss+xml"/><item><title>SpringBoot工程配置笔记</title><link>https://home.y1xuanyun.cn/24web01-springboot/</link><pubDate>Wed, 21 Feb 2024 18:00:00 +0800</pubDate><author>亦轩云</author><guid>https://home.y1xuanyun.cn/24web01-springboot/</guid><description><![CDATA[<div class="hexo-progress-container">
  <div class="hexo-progress-bar" style="width: 100%; background: #4facfe;">
    <span class="hexo-progress-bar-text">该文章长期更新</span>
  </div>
</div>

<h2></h2>
<h1 id="热部署">热部署</h1>
<h2 id="基本概念">基本概念</h2>





<div class="hexo-note hexo-note-info hexo-note-flat">
热部署（Hot Deployment）是指在不停止当前运行程序的情况下，对代码或资源配置进行更新，且这些更新能够被即时反映到正在运行的程序中的一种技术。
</div>

<h2 id="开发环境热部署">开发环境热部署</h2>
<ul>
<li>在<code>pom.xml</code>配置文件中添加<code>dev-tools</code>依赖。</li>
<li>使用<code>optional=true</code>表示依赖不会传递，即该项目依赖<code>devtools</code>; 其他项目如果引入此项目生成的 JAR 包，则不会包含<code>devtools</code>。</li>
</ul>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-Xml">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Xml" data-lang="Xml"><span class="line"><span class="cl"><span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;groupId&gt;</span>org.springframework.boot<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;artifactId&gt;</span>spring-boot-devtools<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;optional&gt;</span>true<span class="nt">&lt;/optional &gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/dependency&gt;</span></span></span></code></pre></div></div>





<div class="hexo-note hexo-note-info hexo-note-flat">
在实际的项目开发调试过程中会频繁地修改后台类文件，导致需要重新编译、重新启动，整个过程非常麻烦，影响开发效率。
</div>

<ul>
<li>而 Spring Boot 提供了<code>spring-boot-devtools</code>组件，使得无须手动重启 Spring Boot 应用即可重新编译启动项目， 大大缩短编译启动的时间。</li>
<li><code>devtools</code>会监听<code>classpath</code>下的文件变动，触发<code>Restart</code>类加载器重新加载该类，从而实现类文件和属性文件的热部署。</li>
<li>并不是所有的更改都需要重启应用（如静态资源、视图模板），可以通过设置<code>spring.devtools.restart.exclude</code>属性来指定—些文件或目录的修改不用重启应用。</li>
</ul>
<h2 id="配置-devtools">配置 devtools。</h2>
<ul>
<li>在<code>application.properties</code>中修改以下代码。</li>
</ul>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-Java">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-Java" data-lang="Java"><span class="line"><span class="cl"><span class="err">#</span><span class="w"> </span><span class="n">热部署生效</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">spring</span><span class="p">.</span><span class="na">devtools</span><span class="p">.</span><span class="na">restart</span><span class="p">.</span><span class="na">enabled</span><span class="o">=</span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">#</span><span class="w"> </span><span class="n">设置重启目录</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">spring</span><span class="p">.</span><span class="na">devtools</span><span class="p">.</span><span class="na">restart</span><span class="p">.</span><span class="na">additional</span><span class="o">-</span><span class="n">paths</span><span class="o">=</span><span class="n">src</span><span class="o">/</span><span class="n">main</span><span class="o">/</span><span class="n">java</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="err">#</span><span class="w"> </span><span class="n">设置classpath目录下的WEB</span><span class="o">-</span><span class="n">INF</span><span class="w"> </span><span class="n">文件夹以下内容</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">spring</span><span class="p">.</span><span class="na">devtools</span><span class="p">.</span><span class="na">restart</span><span class="p">.</span><span class="na">exclude</span><span class="o">=</span><span class="kd">static</span><span class="o">/**</span></span></span></code></pre></div></div>
<h2 id="非-idea-编译器配置">非 IDEA 编译器配置</h2>
<ul>
<li>如果使用了 Eclipse，那么在修改完代&rsquo;码 并保存之后， 项目将自动编译并触发重
启，而如果使用了 lntelliJ IDEA， 还需要配置项目自动编译。</li>
<li>打开<code>Settings</code>页面， 在妇力的菜单栏依次找到 Build，Execution，Deployment 的<code>Compile</code>，勾选<code>Build project automatically</code></li>
<li>*按<kbd>Ctrl</kbd>
+<kbd>Shift</kbd>
+<kbd>Alt</kbd>
+<kbd>／</kbd>
快捷键调出<code>Maintenance</code>页面，单击<code>Registry</code>，勾选<code>compiler.automake.allow.when.app.running</code>复选框。</li>
<li>做完这两步配置之后， 若开发者再次在 lntelliJ IDEA 中修改代码， 则项目会自动重启。</li>
</ul>





<div class="hexo-note hexo-note-info hexo-note-flat">
21 版本的 idea 没有这个选项要去<code>settings</code>里找到<code>Advansed Settings</code>勾选<code>Allow auto-make</code>那个选项就可以了
汉语版的是：即使开发的应用程序当前正在运行，也允许自动 make 启动
</div>

<h1 id="引导-html">引导 html</h1>
<p>用于非前后端分离式 JavaWeb 项目，脱离 Nginx 部署（IDEA）</p>]]></description></item></channel></rss>