# SpringBoot工程配置笔记


{{< progress 100 blue "该文章长期更新" >}}

##

# 热部署

## 基本概念

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

## 开发环境热部署

- 在`pom.xml`配置文件中添加`dev-tools`依赖。
- 使用`optional=true`表示依赖不会传递，即该项目依赖`devtools`; 其他项目如果引入此项目生成的 JAR 包，则不会包含`devtools`。

```Xml
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <optional>true</optional >
</dependency>
```

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

- 而 Spring Boot 提供了`spring-boot-devtools`组件，使得无须手动重启 Spring Boot 应用即可重新编译启动项目， 大大缩短编译启动的时间。
- `devtools`会监听`classpath`下的文件变动，触发`Restart`类加载器重新加载该类，从而实现类文件和属性文件的热部署。
- 并不是所有的更改都需要重启应用（如静态资源、视图模板），可以通过设置`spring.devtools.restart.exclude`属性来指定—些文件或目录的修改不用重启应用。

## 配置 devtools。

- 在`application.properties`中修改以下代码。

```Java
# 热部署生效
spring.devtools.restart.enabled=true
# 设置重启目录
spring.devtools.restart.additional-paths=src/main/java
# 设置classpath目录下的WEB-INF 文件夹以下内容
spring.devtools.restart.exclude=static/**
```

## 非 IDEA 编译器配置

- 如果使用了 Eclipse，那么在修改完代'码 并保存之后， 项目将自动编译并触发重
  启，而如果使用了 lntelliJ IDEA， 还需要配置项目自动编译。
- 打开`Settings`页面， 在妇力的菜单栏依次找到 Build，Execution，Deployment 的`Compile`，勾选`Build project automatically`
- \*按{{< kbd >}}Ctrl{{< /kbd >}}+{{< kbd >}}Shift{{< /kbd >}}+{{< kbd >}}Alt{{< /kbd >}}+{{< kbd >}}／{{< /kbd >}}快捷键调出`Maintenance`页面，单击`Registry`，勾选`compiler.automake.allow.when.app.running`复选框。
- 做完这两步配置之后， 若开发者再次在 lntelliJ IDEA 中修改代码， 则项目会自动重启。

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

# 引导 html

用于非前后端分离式 JavaWeb 项目，脱离 Nginx 部署（IDEA）

## 基本概念

{{< note info flat >}}
{{< /note >}}

## 开发环境热部署

1. 创建一个`Spring Boot`项目。如果你还没有创建，可以使用`Spring Initializr（https://start.spring.io/）`生成一个基本的 Spring Boot 项目结构。在`Dependencies`选项卡中，选择`Web`依赖项。

2. 将你的 HTML 文件放在项目的`src/main/resources/static`目录下。这个目录是`Spring Boot`默认的静态资源目录，用于存放 HTML、CSS 和 JavaScript 文件。

3. 在你的 Spring Boot 项目中，创建一个`Controller`类来处理 HTTP 请求。例如，你可以创建一个名为`MyController`的类，并添加一个方法来处理对 HTML 文件的请求。这个方法应该返回一个`ModelAndView`对象，其中包含要渲染的视图名称（即 HTML 文件的名称）和一个包含视图所需的数据的`Map`对象。

```Java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MyController {

    @GetMapping("/")
    public ModelAndView index() {
        ModelAndView modelAndView = new ModelAndView("index");
        modelAndView.addObject("message", "Hello, Spring Boot!");
        return modelAndView;
    }
}
```

4. 在`src/main/resources/templates`目录下创建一个名为`index.html`的文件，并在其中编写 HTML 代码。例如：

```Java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HomeController {
    @RequestMapping("/")
    public ModelAndView index() {
        ModelAndView modelAndView = new ModelAndView("index");
        modelAndView.addObject("message", "Hello, Spring Boot!");
        return modelAndView;
    }
}
```

```html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Spring Boot HTML Example</title>
  </head>
  <body>
    <h1>{{ message }}</h1>
  </body>
</html>
```

## 非 IDEA 编译器配置

- 如果使用了 Eclipse，那么在修改完代'码 并保存之后， 项目将自动编译并触发重
  启，而如果使用了 lntelliJ IDEA， 还需要配置项目自动编译。
- 打开`Settings`页面， 在妇力的菜单栏依次找到 Build，Execution，Deployment 的`Compile`，勾选`Build project automatically`
- \*按{{< kbd >}}Ctrl{{< /kbd >}}+{{< kbd >}}Shift{{< /kbd >}}+{{< kbd >}}Alt{{< /kbd >}}+{{< kbd >}}／{{< /kbd >}}快捷键调出`Maintenance`页面，单击`Registry`，勾选`compiler.automake.allow.when.app.running`复选框。
- 做完这两步配置之后， 若开发者再次在 lntelliJ IDEA 中修改代码， 则项目会自动重启。

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

