什么是SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

SpringBoot的特点

  • 遵循“约定优于配置”的原则,只需要很少的配置或使用默认的配置。
  • 能够使用内嵌的Tomcat、Jetty服务器,不需要部署war文件。
  • 提供定制化的启动器Starters,简化Maven配置,开箱即用。
  • 纯Java配置,没有代码生成,也不需要XML配置。
  • 提供了生产级的服务监控方案,如安全监控、应用监控、健康检测等。

快速创建SpringBoot应用

利用IDEA提供的Spring Initializr可以快速创建一个SpringBoot应用

image-20220901153153473

也可以前往https://start.spring.io来直接生成一个项目

clipboard_20220825_124524

填写项目信息时:

Group:一般输入公司域名

Artifact:项目名称

Java Version:17(SpringBoot3将弃用Java8版本,建议尽量转17)

接下来要选择SpringBoot的依赖

由于我们要开发的是一个Web项目,所以需要先在Web中勾选Spring Web依赖

image-20220901154225221

点击创建后,就会生成一个maven项目。如果你是第一次使用SpringBoot,那么在后台会先自动同步你选择的依赖,需要等同步完成后才能进一步进行开发

image-20220901154938532

文件结构如上图,主要的代码放置与src目录下

src/main/java中放着一个你定义的包,包中暂时只有你默认的启动程序

src/main/resource目录下放着两个文件夹和一个配置文件

static:用于放置静态文件

templates:用于放置页面模版

application.properties:SpringBoot的配置文件

src/test用于放置测试类

快速上手

我们可以发现现在项目是可以通过主类直接启动的,但是现在启动没有什么用处,因为这是一个后端项目,我们需要做的是接收浏览器发送过来的请求,然后给浏览器返回对应的数据。那么如何去接收浏览器的请求呢?这时就要交给我们的第一个组件:控制器(Controller)

要创建一个控制器,我们需要先在主包下创建一个包名为controller,然后根据对应的实体类名来创建一个controller

如:你的实体类名叫做User,那么你的控制器类就应该命名为UserController

作为演示,我创建了一个名为HelloController的控制器

image-20220901160114217

可以看到我在定义类前写了一条注解@RestController:把当前类标为控制器类

通过定义了这个控制器类,我们就可以开始接收客户端的请求了

定义一个方法,名字随意,返回值为String,返回一个hello world

image-20220901160716527

如果希望浏览器在访问后端项目时可以看到返回的Hello world,那么需要在前面添加一条注解@RequestMapping@GetMapping

@GetMapping注解可以让浏览器通过Get请求来访问该方法,如果传入一个参数,则可以指定访问接口的地址

image-20220901161043949

如图,意为需要通过localhost:端口/hello来访问这个接口方法,启动项目并访问来测试这个接口

如果没有在application.properties中配置端口,那么默认就是tomcat的启动端口8080

image-20220901161454438

成功打印出了hello world

开发环境热部署

  • 在实际的项目开发调试过程中会频繁地修改后台类文件,导致需要重新编译、重新启动,整个过程非常麻烦,影响开发效率。
  • SpringBoot提供了spring-boot-devtools组件,使得无需手动重启SpringBoot应用即可重新编译、启动项目,大大缩短编译启动的时间
  • devtools会监听classpath下的文件变动,触发Restart类加载器重新加载该类,从而实现类文件和属性文件的热部署。
  • 并不是所有的更改都需要重启应用(如静态资源、视图模板),可以通过设置spring.devtools.restart.exclude属性来指定一些文件或目录的修改不用重启应用

配置热部署

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

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
  3. 在application。properties中配置devtools

    # 热部署生效
    spring.devtools.restart.enabled=true
    # 设置重启目录
    spring.devtools.restart.additional-paths=src/main/java
    #设置classpath目录下的WEB-INF文件夹内容修改不重启
    spring.devtools.restart.exclude=static/**
  4. 最后还需要在idea中进行配置:打开Settings页面,在左边的菜单栏依次找到Build,Execution,Deployment->Compile,勾选Build project automatically
  5. 再按Ctrl+Shift+Alt+/调出Maintenance页面,单击Registry,勾选compiler.automake.allow.when.app.running复选框
  6. 如果是新版本的idea,则在Settings -> Advanced Setting 中勾选Allow auto-make to start even if developed application is currently running
最后修改:2022 年 09 月 05 日
如果觉得我的文章对你有用,能不能v我50参加疯狂星期四