SpringBoot2.0入门(详细文档)

news2024/11/25 16:38:05

文章目录

  • Springboot是什么
  • Springboot2.x依赖环境和版本新特性说明
  • 为什么学习Springboot
    • 从springboot优点来看
    • 从未来发展的趋势来看
  • 开发环境
  • Spring Boot开发环境搭建和项目启动
    • jdk 的配置
    • Spring Boot 工程的构建
      • maven配置
      • IDEA 快速构建
      • maven 创建工程
      • 常用注解
  • 完整代码

Springboot是什么

Spring Boot是一个用于开发Java应用程序的开源框架。它基于Spring框架,简化了Spring应用程序的配置和部署过程。Spring Boot通过自动配置来减少开发者的工作量,提供了一种快速构建应用程序的方式。

Springboot2.x依赖环境和版本新特性说明

讲解新版本依赖环境和Springboot2新特性概念

  1. 依赖版本jdk8以上,Springboot2.x用JKD8,因为底层是Spring framework5,
  2. 安装maven最新版本,maven3.2以上版本
  3. 新特性
  4. 翻译工具:https://translate.google.cn/
  5. springbootGitHub地址:http://github.com/spring-projects/spring-boot
  6. Springboot官方文档:http://spring.io/guides/gs/spring-boot

为什么学习Springboot

从springboot优点来看

  1. 简化配置:Spring Boot提供了自动配置的功能,可以根据项目的依赖和环境自动配置应用程序。开发者无需手动配置大量的XML文件或注解,可以快速搭建整个项目的基础框架。
  2. 快速开发:Spring Boot提供了许多开箱即用的功能和扩展库,可以大大减少开发时间和工作量。开发人员可以通过使用这些功能和库快速搭建应用程序,而无需重复编写常见的代码。
  3. 独立性:Spring Boot应用程序可以作为独立的可执行文件运行,无需外部的Web服务器。它内置了嵌入式Web服务器(如Tomcat、Jetty等),可以直接运行应用程序。这样可以减少部署和运维的复杂性
  4. 易于测试:Spring Boot提供了一系列的测试工具和框架,可以方便地进行单元测试、集成测试和端到端测试。开发者可以使用这些工具来保证应用程序的质量和稳定性。
  5. 生态系统:Spring Boot是在Spring框架之上构建的,可以充分利用Spring框架丰富的生态系统。开发者可以方便地集成其他Spring组件和第三方库,提供更灵活和可扩展的解决方案。

从未来发展的趋势来看

Spring Boot未来发展的趋势是更加注重微服务架构、云原生应用、响应式编程、安全性增强以及更好的集成和开发体验。这些趋势将有助于Spring Boot在未来持续地发展和壮大,并进一步提升在开发者中的地位和影响力。

开发环境

开发工具

  • JDK版本
  • Spring Boot版本
  • Maven版本:3.5.2

涉及到的插件:

  • FastJson
  • Swagger2
  • Thymeleaf
  • MyBatis
  • Redis
  • ActiveMQ
  • Shiro
  • Lucence
  • YAML

Spring Boot开发环境搭建和项目启动

jdk 的配置

使用 IDEA 进行开发,在IDEA 中配置 jdk 的方式很简单,打开文件->项目结构,如下图所
在这里插入图片描述

  1. 选择 SDKs
  2. 在 JDK home path 中选择本地 jdk 的安装目录
  3. 在 Name 中为 jdk 自定义名字

Spring Boot 工程的构建

maven配置

创建了 Spring Boot 项目之后,需要进行 maven 配置。打开文件->设置,搜索 maven,配置一下本地的 maven 信息。如下
在这里插入图片描述

IDEA 快速构建

在IDEA 中可以通过文件->新建->项目来快速构建 Spring Boot 工程。如下,选择 Spring Initializr,在 Project SDK 中选择刚刚我们导入的 jdk,点击 Next,到了项目的配置信息。
组:填企业域名,本课程使用com.itcodai
工件:填项目名称,本课程中每一课的工程名以course+课号命令,这里使用 course01
依赖项:可以添加我们项目中所需要的依赖信息,根据实际情况来添加,本课程只需要选择 Web 即可。

maven 创建工程

Springboot是建立在maven上的我们只需要创建一个maven工程导入SpringBoot依赖即可
不需要选择原型
在这里插入图片描述
输入项目名称点击完成即可
在这里插入图片描述

<parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.5.7</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

在这里插入图片描述

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//这是一个复合注解,通常情况下,我们会把启动类放到项目的顶级目录
//注意:SpringBootApplication中的@ComponentScan会默认扫描本类所在包一下的子包
@SpringBootApplication
public class DemoAplication {

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

在这里插入图片描述

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/")
    public String hello(){
        return "hello";
    }
}

在这里插入图片描述
重新运行 main 方法启动项目,在浏览器中输入 localhost:8080,如果看到“hello”,那么恭喜你项目启动成功!Spring Boot 就是这么简单方便!端口号默认是8080,如果想要修改,可以在 application.properties 文件中使用 server.port 来人为指定端口,如811端口

server.port=811

常用注解

启动类的注解
@SpringBootApplication是一个复合注解。@SpringBootApplication=@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan
@SpringBootConfiguration:@SpringBootConfiguration标注在类上,相当与把该类作为Spring的xml配置文件中的<beans> 作用为:配置Spring容器(应用上下文)
@EnableAutoConfiguration:开启自动配置。MATA-INF下的Spring.facotries的一些自动配置类
@ComponentScan:扫描注解。如果不配置basepackage,默认扫描@ComponentScan注解类的同级类和子目录下的所有类。所以要把启动类放到顶级目录。
控制层的注解
@RestController and @RequestMapping是SpringMvc的注解,不是SpringBoot的特有的
@RestController = @Controller+@ResponseBody

完整代码

//bean类
import com.fasterxml.jackson.annotation.*;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class Person implements Serializable {

    private String userid;

    @JsonIgnore//字段不返回
    private int age;

    @JsonFormat(pattern = "yyyy-MM-dd")//指定时间格式
    private Date time;

    @JsonProperty("dizi")//指定别名 注意:使用别名后,请求中key也要使用别名
    private String address;

    @JsonInclude(JsonInclude.Include.NON_NULL)//空字段不返回
    private String mailbox;


}
Controllerimport com.demo.bean.Person;
import org.springframework.web.bind.annotation.*;


@RestController
public class HelloController {

    @RequestMapping("/")
    public String hello(){
        return "hello";
    }

    /**
     * 功能描述:restful协议。从路径中获取参数
     * 1.接口中的参数定义,建议使用下划线隔开,不在使用驼峰
     * 2.path="/{cityid}/{userid}",标识路径中那些参数
     * 3.method=RequestMethod.GET,只处理get请求
     * 4.@PathVariable("cityid"),从路径中取出参数值
     * @return
     */
    @RequestMapping(value = "/{cityid}/{userid}",method = RequestMethod.GET )
    public Object test(
            @PathVariable("cityid")String cityid,
            @PathVariable("userid")String userid){
        return cityid+"---"+userid;
    }

    /**
     *参数的默认值设置
     * 添加@RequestParam 默认此参数是必填的
     * @return
     */
    @RequestMapping("/test02")
    public Object test02(@RequestParam(required = false,defaultValue = "2") Integer pageNo){
        return pageNo;
    }

    /**
     * 测试@RequestBody。要从请求体中获取数据
     * 有如下要求:
     * 1.数据要在请求体中
     * 2.数据的格式为content-type 是值是application/json
     * @return
     */
    @RequestMapping("/test03")
    public Object test03(@RequestBody Person person){
        return person;
    }

    /**
     * 从请求头获取数据
     * 一般情况下请求头中放置认证信息,例如access_token
     * @param access_token
     * @return
     */
    @RequestMapping("/test04")
    public Object test04(@RequestHeader String access_token){
        return access_token;
    }

    /**
     * 获取实体类的参数
     * @JsonIgnore//字段不返回
     * @JsonFormat(pattern = "yyyy-MM-dd")//指定时间格式
     * @JsonProperty("")//指定别名 注意:使用别名后,请求中key也要使用别名
     * @JsonInclude(JsonInclude.Include.NON_NULL)//空字段不返回
     * @return
     */
    @RequestMapping("/test05")
    public Object test05(@RequestBody Person person){
        return person;
    }
}
//pom.xml
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.1</version>
        </dependency>
        
    </dependencies>

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

延迟win11的更新

自从升级到win11之后&#xff0c;发现更新插件的频率高得有点过分,每隔几天就是一次. 我看网上有人能把更新时间延迟几十万年,所以我心动了! 我试了一下:成功延迟到2099年 创建一个文本文件&#xff0c;命名为&#xff1a;“stopupdate.reg”&#xff0c;然后用记事本或者代码…

SpringMVC之入门:springmcx工作流程,springmvc的入门,静态资源处理器

springmvc工作流程springmvc的入门静态资源处理 1.springmvc工作流程 自定义mvc流程&#xff1a;1.客户端浏览器发送请求url http://localhost:8080/mvc/book.action?methodNamelist 2.被中央控制器dispatchServlet接收 *.action 将url处理&#xff0c;截取得到 *(/book) 3.通…

水循环原理VR实景教学课件开发

日本核污水排海让人们越来越重视海洋大气层水循环的安全&#xff0c;水循环是一个周而复始、循环往复的动态过程&#xff0c;为了将水循环过程以形象、生动地形式展示出来&#xff0c;水循环VR全景动态演示逐渐受到大家青睐。 传统的水循环教育方式通常是通过图片、动画或实地考…

python机器人编程——用python实现一个写字机器人

目录 一、前言二、整体框架2.1 系统构成2.2 硬件介绍2.2.1主要组成部分2.2.2机械结构2.2.3驱动及控制主板PS电机驱动原理简介: 2.2.4其余部分 2.3 机器人python程序框架2.3.1通信服务模块2.3.2消息处理模块2.3.3轨迹解析模块2.3.4机械臂逆解模块2.3.5写字板模块 三、机械臂的建…

我们如何在工作与生活中找到平衡点?

找到工作与生活中的平衡点是每个人都必须面对的问题。以下是一些建议&#xff0c;可以帮助你在工作和生活之间找到平衡&#xff1a; 制定时间表&#xff1a;确保你有足够的时间来处理工作和生活中的各种任务。为工作、学习和个人生活设定优先级&#xff0c;并确保时间分配合理…

VMware Explore | 联想与VMware扩大合作带来生成式AI和多云解决方案

*带有 VMware Cloud 的全新联想 ThinkSystem 生成式 AI 解决方案&#xff0c;采用 NVIDIA 加速计算和软件&#xff0c;提供专为实现下一代 AI 工作负载而打造的 GPU 密集型平台。 联合创新实验室为商业中端市场和企业提供即用型混合多云解决方案。 全新 Lenovo TruScale Hybr…

C++ - 搜索二叉树

二叉搜索树的概念 二叉搜索树&#xff0c;又称二叉排序树。它具有以下性质&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值。若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值。它的左右子树也分别为二叉搜索树。 …

核心实验16_端口镜像_ENSP

项目场景&#xff1a; 核心实验16_端口镜像_ENSP 实搭拓扑图&#xff1a; 具体操作&#xff1a; 交换机: [garliccc]observe-port 1 interface GigabitEthernet 0/0/3 /设置0/0/3为观察口 [garliccc]int g0/0/2 [garliccc-GigabitEthernet0/0/2]port-mirroring to observe-po…

Java后端简历指南(应届)

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; Java后端简历指南&#xff08;应届&#xff09; 文章目录 Java后端简…

人离自动断电设备的功能要求

人离开自动断电石家庄光大远通电气有限公司用电器待机能耗往往是一种不易被发现的“隐藏的浪费”&#xff0c; 如果将一户家庭的空调、洗衣机、电视、微波炉、电饭煲五类电器进行计算&#xff0c;待机功率在12W到15W&#xff0c;待机能耗0.2度到0.33度电。每年能耗73度到124.45…

Nginx 中 location 和 proxy_pass 斜杠/ 问题

location 的斜杠问题比较好理解&#xff0c;不带斜杠的是模糊匹配。例如&#xff1a; location /doc 可以匹配 /doc/index.html&#xff0c;也可以匹配 /docs/index.html。 location /doc/ 强烈建议使用这种 只能匹配 /doc/index.html&#xff0c;不能匹配 /docs/index…

Python入门 | 如何判断多个条件

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 之前我们已经了解了如何在 Python 中进行条件判断&#xff08;《是真是假&#xff1f;》&#xff09;&#xff0c;以及根据判断的结果执行不…

浅谈基于LoRa通信技术的建筑能耗监测系统及模块

安科瑞 华楠 摘要&#xff1a;本文提出采用LoRa通信技术开发设计建筑能耗监测系统的建议&#xff0c;通过系统&#xff0c;该系统功能完善、界面友好、通信稳定&#xff0c;在建筑能耗监测领域中有较高的推广价值。 关键词&#xff1a;LoRa通信&#xff1b;建筑能耗&#xff…

C#根据excel文件中的表头创建数据库表

C#根据excel文件中的表头创建数据库表 private void button1_Click(object sender, EventArgs e){string tableName tableNameTextBox.Text;string connectionString "";using (OpenFileDialog openFileDialog new OpenFileDialog()){openFileDialog.Filter &quo…

Stable Diffusion - 配置 WebUI 升级至 v1.6.0 版本与 VirtualENV 环境配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132177882 图像基于 哥特风格 绘制&#xff0c;参考 哥特 (Goth) 风格服装与背景的 LoRA 配置 Stable Diffusion WebUI 是一款基于 Stable Diffus…

uniapp自定义水印相机

uniapp自定义水印相机 背景实现UI实现功能实现全部实现代码 尾巴 背景 上一篇文章实现了uniapp中给页面添加水印&#xff0c;今天我们实现一个自定义水印相机&#xff08;最近跟水印杠上了&#xff0c;哈哈&#xff09;。主要使用了camera组件来实现取景框预览&#xff0c;最后…

华为云云耀云服务器L实例评测 | 使用UnixBench对华为云云耀云服务器L实例性能测试

文章目录 1 云耀云服务器L实例1.1 简介1.2 使用详情页&#xff1a;远程登录&#xff1a;本地连接&#xff1a;1. 重置密码2.设置安全组 MobaXterm本地连接 2 UnixBench性能测试2.1 UnixBench 的介绍和使用方法2.2 CentOS 7.6系统中编译和安装UnixBench的步骤&#xff1a;2.3 测…

java导出Mysql表信息生成Word文档

一、背景描述 系统上线或者交付&#xff0c;或者需要提供整理数据库表信息&#xff0c;如果一个个整理未免麻烦&#xff0c;接下来一个demo示例如何用JAVA导出Mysql数据库表信息生成Word文档。 传入null导出全部表 传指定表只导出指定表

pmp项目管理考试是什么?适合哪些人学?

PMP&#xff0c;简单点说&#xff0c;就是美国PMI为考察项目管理人士的专业能力而设立的考试。 该流程以知识和任务驱动型指南评估从业者的能力&#xff0c;同时确定项目经理能力行业标准&#xff0c;包括各项知识、任务和技能的特点、重要性与运用频率。&#xff08;考纲原文…

OpenHarmony创新赛|赋能直播第三期

开放原子开源大赛OpenHarmony创新赛赋能直播间持续邀请众多技术专家一起分享应用开发技术知识&#xff0c;本期推出OpenHarmony应用开发之音视频播放器和三方库的使用和方法&#xff0c;助力开发者掌握多媒体应用技术的开发能力和使用三方库提升应用开发的效率和质量&#xff0…