【SpringBoot从入门到精通】02_SpringBoot快速上手

二、SpringBoot快速上手

环境准备:

  • Java8及以上

  • Maven3.5+

    https://docs.spring.io/spring-boot/docs/2.7.14/reference/html/getting-started.html#getting-started

  • SpringBoot 2.x 最新版

开发工具:

  • IDEA 2022

2.1 开发第一个SpringBoot应用程序

目的:

  • 我们将学习如何快速的创建一个Spring Boot应用,并且实现一个简单的Http请求处理。通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。
  • 掌握官网文档的基本使用。

实现步骤

Developing Your First Spring Boot Application:

https://docs.spring.io/spring-boot/docs/2.7.14/reference/html/getting-started.html#getting-started.first-application

  1. 创建普通的Maven工程;

  2. 在pom.xml中配置springboot的父类继承和web场景启动器;

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.14</version>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
  3. 编写主程序类;

    package com.gs.boot;
    
    /**
     * 主程序类
     * @SpringBootApplication:这是一个SpringBoot应用
     */
    @SpringBootApplication
    public class MainApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MainApplication.class, args);
        }
    
    }
    
  4. 编写业务

    1. 在主程序的同级目录下,新建一个controller包,一定要在同级目录下,否则识别不到

    2. 在包中新建一个HelloController类;

      package com.gs.boot.controller;
      
      @RestController
      public class HelloController {
      
          @RequestMapping("/hello")
          public String home(){
              return "Hello, SpringBoot!";
          }
      
      }
      
  5. 测试:直接运行main方法

    简单几步,就完成了一个web接口的开发,SpringBoot就是这么简单。所以我们常用它来建立我们的微服务项目!

简化配置

Application Properties:

https://docs.spring.io/spring-boot/docs/2.7.14/reference/html/application-properties.html#appendix.application-properties

application.properties修改端口号:

server.port=8088

简化部署

创建一个可执行的jar:

https://docs.spring.io/spring-boot/docs/2.7.14/reference/html/getting-started.html#getting-started.first-application.executable-jar

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

1、将项目打成jar包,点击 maven的 package,如果打包成功,则会在target目录下生成一个 jar 包。

2、打成了jar包后,就可以在任何地方运行了!命令:java -jar xxx.jar

SpringBoot的每一个项目都嵌套了一个tomcat服务器,项目打包后可以单独运行,就非常简单的创建了响应的接口,体现了微服务的概念。

注意点:取消掉cmd的快速编辑模式。

2.2 基于 Spring Initializr创建项目

基于 Spring Initializr 的 Web页面

Spring官方提供了非常方便的工具让我们快速构建应用,Spring Initializr:https://start.spring.io/

1、打开https://start.spring.io/;

2、填写项目信息;

3、点击”Generate Project“按钮生成项目,下载此项目;

4、解压项目包,并用IDEA以Maven项目导入,一路下一步即可,直到项目导入完毕;

5、如果是第一次使用,可能速度会比较慢,包比较多、需要耐心等待一切就绪;

基于 IDEA 的 Spring Initializr

1、创建一个新项目;

2、选择Spring Initializr,可以看到默认就是去官网的快速构建工具那里实现;

3、填写项目信息;

在当前页面将 https://start.spring.io 替换为阿里的 https://start.aliyun.com;

在这里插入图片描述

4、选择初始化的组件(初学勾选 Web 即可);

在这里插入图片描述

5、等待项目构建成功;

2.3 项目结构分析

通过上面步骤完成了基础项目的创建。就会自动生成以下文件。

1、程序的主启动类

2、一个 application.properties 配置文件

3、一个测试类

4、一个 pom.xml

pom.xml 分析

打开pom.xml,看看Spring Boot项目的依赖:

<!-- 父依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.14</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<!-- 项目依赖 -->
<dependencies>
    <!-- web场景启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- 单元测试场景启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <!-- Maven插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

程序的主启动类

@SpringBootApplication
public class Springboot01HelloworldApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot01HelloworldApplication.class, args);
    }

}

资源目录

  • static:存放静态资源的目录
  • templates:存放模板页面的目录
  • application.properties:核心配置文件

2.4 自定义Banner

如何更改启动时显示的字符拼成的字母,SpringBoot呢?也就是 banner 图案;

只需一步:到项目下的 resources 目录下新建一个banner.txt 即可。

图案可以到:https://www.bootschool.net/ascii 这个网站生成,然后拷贝到文件中即可!

2.5 开发小技巧

Lombok

Lombok是一个在Java开发过程中用注解的方式,简化了 JavaBean 的编写,避免了冗余和样板式代码而出现的插件,让编写的类更加简洁。

Lombok原理:

  • Lombok是将自动生成的代码织入字节码文件中,从而实现:源代码没有,但是字节码文件有——毕竟我们最终运行的是字节码文件,只要字节码文件中有即可。而这个过程因为要参与源文件编译,所以需要安装IDEA插件。

在IDEA安装Lombok插件:

  • File —> Settings —> Plugins —> Browse repositories —> 搜索lombok(小辣椒)

加入依赖:

  • SpringBoot对Lombok已经进行了依赖管理,直接添加依赖,无需指定版本号。

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    

使用Lombok注解:

  • @Getter/@Setter:自动生成getter/setter;

  • @ToString:自动重写 toString() 方法,会印出所有变量;

  • @EqualsAndHashCode:自动生成 equals(Object other) 和 hashcode() 方法,包括所有非静态变量和非 transient 的变量;

  • @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor:这三个很像,都是在自动生成该类的构造器,差别只在生成的构造器的参数不一样而已;

    • @NoArgsConstructor : 生成一个没有参数的构造器
    • @AllArgsConstructor : 生成一个包含所有参数的构造器
    • @RequiredArgsConstructor : 生成一个包含 “特定参数” 的构造器,特定参数指的是那些有加上 final 修饰词的变量们;补充一下,如果所有的变量都是正常的,都没有用 final 修饰的话,那就会生成一个没有参数的构造器
  • @Data:整合包,只要加了 @Data 这个注解,等于同时加了以下注解 @Getter/@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor;

  • @Slf4j:用作日志输出的,添加了该注释之后,就可以在代码中直接饮用log.info( ) 打印日志了;

    @Slf4j
    @RestController
    public class HelloController {
        @RequestMapping("/hello")
        public String handle01(@RequestParam("name") String name){
            
            log.info("请求进来了....");
            
            return "Hello, Spring Boot 2!"+"你好:"+name;
        }
    }
    

Developer Tools

Spring Boot 提供了一组开发工具 spring-boot-devtools 可以提高开发者的工作效率,开发者可以将该模块包含在任何项目中,spring-boot-devtools 最方便的地方莫过于热部署了。

https://docs.spring.io/spring-boot/docs/2.7.14/reference/html/using.html#using.devtools

添加依赖:

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

注意:这里多了 一个 optional 选项,是为了防止将 devtools 依赖传递到其他模块中。当开发者将应用打包运行后,devtools 会被自动禁用

当开发者将 spring-boot-devtools 引入项目后,只要 classpath 路径下发生变化,项目就会自动重启,这极大地提高了项目的开发速度。

  • 如果开发者使用 Eclipse ,那么在修改完代码并保存之后,项目将自动编译井触发重启;

  • 如果开发者如果使用 IntelliJ IDEA 默认情况下,需要开发者手动编译才会触发重启。手动编译时,单击 Build -> Build Project 菜单或者按 Ctrl+F9 快捷键进行编译,编译成功后就会触发项目重启。

  • 当然,使用 IntelliJ IDEA 开发者也可以配置项目自动编译,配置步骤:

    • 单击 File -> settings 菜单,打开 settings 页面,在左边的菜单栏依次找到 Build,Execution,Deployment -> Compile,勾选 Build project automatically;

    • 按住Ctrl+Shift+Alt+/ 快捷捷键调出 Maintenance 界面;

    • 选择 Registry,在新打开的 Registry 页面中,勾选compiler.automake.allow.when.app.running 复选框。配置完成后,若开发者修改了代码则将会自动重启。

      高版本IDEA没有该选项,改到设置-高级设置模块;

      单击 File -> settings 菜单,打开 settings 页面,找到Advanced Settings ;在Compiler下勾选 Allow auto-make to restart even if developed application is currently running。

      若没有生效,请重启IDEA。

当类和页面中的代码改变时,项目服务器会自动重启并加载,效率较高,利于开发!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/498698.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是土壤墒情检测站?它在农业生产中有什么作用?

土壤墒情检测站是一种专门用于监测土壤水分状况和土壤水力性质的设备。它由多个传感器和数据采集单元组成&#xff0c;能够实时监测土壤中的水分含量、土壤温度等参数&#xff0c;并收集和记录相关的数据&#xff0c;提供土壤墒情&#xff08;即土壤水分状态&#xff09;的详细…

|行业洞察·趋势报告|《2024旅游度假市场简析报告-17页》

报告的主要内容解读&#xff1a; 居民收入提高推动旅游业发展&#xff1a;报告指出&#xff0c;随着人均GDP的提升&#xff0c;居民的消费能力增强&#xff0c;旅游需求从传统的观光游向休闲、度假游转变&#xff0c;国内人均旅游消费持续增加。 政府政策促进旅游市场复苏&…

代码随想录——移除元素(Leetcode27)

题目链接 暴力&#xff1a;&#xff08;没有改变元素相对位置&#xff09; class Solution {public int removeElement(int[] nums, int val) {int len nums.length;for(int i 0; i < len; i){if(nums[i] val){for(int j i 1; j < len; j){nums[j-1] nums[j];}i…

C#自定义最大化、最小化和关闭按钮

目录 1.资源文件 2.读取资源文件中的图片 3.WindowState属性 4. 示例 用户在制作应用程序时&#xff0c;为了使用户界面更加美观&#xff0c;一般都自己设计窗体的外观&#xff0c;以及窗体的最大化、最小化和关闭按钮。本例通过资源文件来存储窗体的外观&#xff0c;以及最…

【设计模式】中介者模式的应用

文章目录 1.概述2.中介者模式的适用场景2.1.用户界面事件2.2.分布式架构多模块通信 3.总结 1.概述 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;它用于解决对象间复杂、过度耦合的问题。当多个对象&#xff08;一般是两个以上的对象&…

腾讯云邮件推送功能有哪些?如何有效使用?

腾讯云邮件推送如何设置&#xff1f;怎么用邮件推送做高效营销&#xff1f; 腾讯云作为业界领先的云服务提供商&#xff0c;其邮件推送功能在便捷性、稳定性和安全性上都有着出色的表现。那么&#xff0c;腾讯云邮件推送功能究竟有哪些呢&#xff1f;让AokSend来探个究竟。 腾…

map与set容器常见操作详解(含示例代码及注意事项)

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生 &#x1f648;个人主页&#x1f389;&#xff1a;GOTXX &#x1f43c;个人WeChat&#xff1a;ILXOXVJE &#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&…

类与对象中C++

加油&#xff01;&#xff01;&#xff01; 文章目录 前言 一、类的6个默认成员函数 ​编辑 二、构造函数 1.概念 三、析构函数 1.概念 2.特性 四、拷贝构造函数 1.概念 2.特征 拷贝构造函数典型调用场景 五、赋值运算符重载 1.运算符重载 2.赋值运算符重载 赋值运算符重载格式…

【Qt】:坐标

坐标 一.常用快捷键二.使用帮助文档三.Qt坐标体系1.理论2.代码 一.常用快捷键 注释&#xff1a;ctrl / • 运⾏&#xff1a;ctrl R • 编译&#xff1a;ctrl B • 字体缩放&#xff1a;ctrl ⿏标滑轮 • 查找&#xff1a;ctrl F 比特就业课 • 整⾏移动&#xff1a;ctrl …

【Linux】体验一款开源的Linux服务器运维管理工具

今天为大家介绍一款开源的 Linux 服务器运维管理工具 - 1panel。 一、安装 根据官方那个提供的在线文档&#xff0c;这款工具的安装需要执行在线安装&#xff0c; # Redhat / CentOScurl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start…

.NET CORE使用Redis分布式锁续命(续期)问题

结合上一期 .NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案(.NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案-CSDN博客)。有的小伙伴私信说如果锁内锁定的程序或者资源未在上锁时间内执行完&#xff0c;造成的使用资源冲突&#xff0c;需要如何解决。本…

原创度检测工具分享,文章质量检测方便又简单

文章检测有利于我们了解文章内容的质量高低&#xff0c;而在以往我们检测文章只能依靠手动去检测&#xff0c;这是相当消耗工作时间的&#xff0c;但是在原创度检测工具出来之后&#xff0c;很多人开始检测文章质量就改用原创度检测工具了&#xff0c;因为使用原创度检测工具是…

ES学习日记(三)-------第三方插件选择

前言 在学习和使用Elasticsearch的过程中&#xff0c;必不可少需要通过一些工具查看es的运行状态以及数据。如果都是通过rest请求&#xff0c;未免太过麻烦&#xff0c;而且也不够人性化。 目前我了解的比较主流的插件就三个,head,cerebor和elasticHD 1.head 老牌插件,功能…

vant checkbox 复选框 样式改写

修改前 修改后 基于 vant&#xff1a; 4.8.3 unocss: 0.53.4 <van-checkbox-group v-model"query.zczb" shape"square" class"text-16 w-100% flex flex-wrap"><template v-for"item in registerCapitalOption"><v…

伪原创文章生成软件:自媒体文章写作好神器

自媒体的红利时代&#xff0c;许多人都纷纷参于其中&#xff0c;而文章写作是做自媒体的基本技能&#xff0c;但是随着技术的发展&#xff0c;如今&#xff0c;既使不会写作能力一样可以做起自媒体&#xff0c;方法就是利用伪原创文章生成软件来做内容的输出&#xff0c;其实伪…

PowerBI和Tableau之间该怎么选择?

最近经常看到朋友询问&#xff0c;最近想学习数据分析工具&#xff0c;但是PowerBI和Tableau之间不知道怎么选择? 其实可以从下面几个方面进行参考&#xff0c;Power BI和Tableau哪个更适合你&#xff1f; 共同点&#xff1a; Power BI和Tableau都是强大的数据分析和数据可…

Node爬虫:原理简介

在数字化时代&#xff0c;网络爬虫作为一种自动化收集和分析网络数据的技术&#xff0c;得到了广泛的应用。Node.js&#xff0c;以其异步I/O模型和事件驱动的特性&#xff0c;成为实现高效爬虫的理想选择。然而&#xff0c;爬虫在收集数据时&#xff0c;往往面临着诸如反爬虫机…

QML通过鼠标拖动的位置

当通过鼠标拖动Rectangle 的位置时&#xff0c;可以使用Qt Quick的MouseArea组件来实现 Rectangle {id: rectx:0;y:0width: 200; height: 100color: "lightblue"MouseArea {id: mouseAreaanchors.fill: parentdrag.target: rect//要拖动的项目的IDdrag.axis: Drag.XA…

设计模式 —— 设计原则

在软件开发中&#xff0c;为了提高软件系统的可维护性和可复用性&#xff0c;增加软件的可扩展性和灵活性&#xff0c;程序员要尽量根据6条原则来开发程序&#xff0c;从而提高软件开发效率、节约软件开发成本和维护成本。 开闭原则 对扩展开放&#xff0c;对修改关闭。在程序需…

【Pt】马灯贴图绘制过程 03-制作油渍、积尘效果

目录 效果 一、制作油渍效果 1.1 基本油渍 1.2 流淌的油渍痕迹 二、制作浮尘效果 三、制作积尘效果 效果 一、制作油渍效果 1.1 基本油渍 将上篇制作的“锈迹_深色”和“锈迹_浅色”两个文件夹再次合并为一个文件夹 这里就命名为“锈迹” 添加一个填充图层 设置Base …