SpringBoot概述及项目的创建使用

文章目录

  • 一. Spring Boot概述
    • 1. 什么是Spring Boot?
    • 2. Spring Boot的优点
  • 二. Spring Boot项目的创建
    • 1. 使用IDEA创建
      • 1.1. 准备工作
      • 1.2. 创建运行Spring Boot项目
      • 1.3. 进行Web交互
      • 1.4. 目录工程介绍
      • 1.5. 项目快速添加依赖
      • 1.6. 防止配置文件乱码所需的配置
      • 1.7. SpringBoot热部署
    • 2. 使用网页创建SpringBoot项目

一. Spring Boot概述

1. 什么是Spring Boot?

Spring 是为了简化 Java 程序开发而诞生的,而 Spring Boot 是为了简化 Spring 项目的开发而诞生的。

Spring Boot 直接翻译过来就是 Spring 脚手架的意思,平时我们我们也能常见到在建造房屋等建筑时脚手架这种工具是很常见的,建筑行业的脚⼿架的作用是砌筑砖墙,浇筑混凝⼟,⽅便墙⾯抹灰,装饰和粉刷的,也就是说使用脚手架可以提高建房的效率。

img

而我们这里也一样,Spring 脚手架,它就能够提高开发 Spring 项目的效率。

2. Spring Boot的优点

  • 快速集成框架,Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架。
  • 内置运行容器,无需配置 Tomcat 等 Web 容器,直接运行和部署程序。
  • 快速部署项目,无需外部容器即可启动并运行项目。
  • 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发。
  • 支持更多的监控的指标,可以更好的了解项目的运行情况。

二. Spring Boot项目的创建

1. 使用IDEA创建

1.1. 准备工作

首先看你的 IDEA 是社区版还是专业版,专业版是无需额外安转插件的,直接创建 SpringBoot 项目即可。

而社区版 IDEA 中没有内置 Spring Boot 项目创建的插件,此时就需要下载第三方插件Spring Boot Helper来创建Spring Boot项目。

插件安装步骤:
1️⃣第一步,从IDEA找到Setting设置。
img
2️⃣第二步,找到插件选项,搜索安装后重新启动 IDEA 即可。
img
对于专业版的 IDEA,本身内置的插件这个插件了,社区版安装好插件后和专业版就大同小异了,看下面的介绍,以社区版为例。

1.2. 创建运行Spring Boot项目

1️⃣第一步,新建项目,选择你常用的 jdk 版本,现在稳定的有 8,11,17 三个版本,我这里用的是 jdk1.8。
img
2️⃣第二步,选择 Java 版本(一定要选择本地存在的 jdk 版本)和项目类型,然后next。
img

3️⃣第三步,选择 Spring Boot 版本,要注意使用 jdk1.8 的话只能选择 版本为2.x.x的,后面没有字母的是稳定版。
img

4️⃣第四步,添加需要的依赖,看选项选择即可,然后 next。

img
img
5️⃣第五步,设置项目名称与路径,设置好后点击 Finish 即可。
img

6️⃣第六步,添加 Maven 工具,社区版打开项目后,右侧没有 Maven 需要我们手动添加,这是因为社区版 IDEA 不能识别该项目为 Maven 项目,专业版没有这个问题。

img

img

要注意 IDEA 社区版是有一些 Bug 的,在 pom.xml 文件中,我们要选择的 springboot 版本是2.7.14,但它加的是2.7.14.RELEASE,我们把后面的RELEASE删除即可,专业版是没有这个问题的。

img
7️⃣第七步,刷新等待项目加载完成,直到 SpringBoot 项目的启动类DemoApplication图标变蓝为止。

imgimg

第一次加载时间可能有点久,如果加载失败,先看 Maven 配置的是不是国内源,试着重新加载几次,实在不行,再将 SpringBoot 的源成换国内的阿里源试一试。
img
所谓启动类就是带有@SpringBootApplication注解的那个类。
img
点击运行按钮,显示下图中的结果就表示 SpringBoot 项目创建成功了。
img

8️⃣第八步,创建完 SpringBoot 项目之后我们还可以删除一些没有用的目录,不影响使用。

img

1.3. 进行Web交互

我们写一个程序,当浏览器访问路径时,在网页上输出网页上显示Hello,SpringBoot!,如果能够成功显示到浏览器的话才表示我们创建项目创建完全没有问题。

要注意在 SpringBoot 项目中,我们创建的类必须在启动类同级目录或者子级目录下,这样才能被被框架识别扫描到,因为在 Spring Boot 项目中是不需要配置扫描路径的,只需要将类创建在指定目录下即可,这也是 SpringBoot 项目的一个特点,约定大于配置(相较于 Spring 配置较少,在 Spring 中需要配置 Bean 的扫描路径的,而 Spring Boot 中不需要,放到约定的路径下即可)。

package com.example.springboot.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    @ResponseBody   // 不加默认返回一个页面, 这是历史问题, 返回一个非静态页面数据,可以加到类上也可以加到方法上
    @RequestMapping("/hello")
    public static String sayHi() {
        return "Hello, SpringBoot!";
    }
}

启动程序。

img
🍂访问结果:
img

我们再尝试将TestController移动到非启动类目录下,重新运行程序,访问路径。

img

🍂访问结果:

此时我们访问时,就报 404 了,这就说明此时 Spring Boot 项⽬没有将 TestController 对象注⼊到容器中。
img

1.4. 目录工程介绍

Spring Boot 项⽬有两个主要的⽬录:

①src/main/java 为 Java 源代码。

②src/main/resources 为静态资源或配置⽂件:

  • /static:静态资源⽂件夹;
  • /templates:模版资源⽂件夹。

img

1.5. 项目快速添加依赖

1️⃣第一步,我们需要一个插件EditStarters,在 IDEA 插件设置中,下载安装,然后重启IDEA。
img

2️⃣第二步,找到pom.xml文件,右键选择Generate
img
3️⃣第三步,选择刚刚下载的插件那个选项。
img
4️⃣第四步,设置数据源,用默认就行。
img
5️⃣第五步,添加/修改依赖。
img

1.6. 防止配置文件乱码所需的配置

打开Setting,找到如下图所在目录,将所有的编码格式改为utf8
img

上面这一步只是设置了当前项目,我们还需要针对新项目做出同样的设置。
img
设置改好之后,需要删除配置文件重新创建,就不会出现乱码了。

1.7. SpringBoot热部署

1️⃣第一步,在pom.xml中添加spring-boot-devtools依赖。

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

2️⃣第二步,打开Setting,开启项目自动编译。

img

3️⃣第三步,在Setting中开启项目运行中进行热部署(其实就是自动重启 IDEA)。

img

4️⃣第四步,再针对新项目完成上面第二步设置即可,之所以不设置第三步是因为Advanced Settings选项只有在File->Settings里面才有,只能在当前项目设置,而在File->New Projects Setup->Settings for New Projects这个设置页面里是没有的,所以需要我们在新项目中自己手动再去设置。
img

2. 使用网页创建SpringBoot项目

1️⃣第一步,打开SpringBoot项目创建网站:https://start.spring.io/

img
2️⃣第二步,配置项目,按照下图配置即可,与在IDEA创建及其类似。
img
3️⃣第三步,选择必要的依赖。
img

img
4️⃣第四步,点击创建按钮(点击一次即可,不然会下载多个 SpringBoot 的zip包)。
img
然后就会生成一个压缩包,自动下载到本地。
img
5️⃣第五步,解压后通过 IDEA 打开即可。
img

此时项目也是可以运行的。
img

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

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

相关文章

Arcgis中POI找到建筑面内距离最近的标准地址通过模型构建器来实现

背景 之前写过一篇文章 Arcgis通过矢量建筑面找到POI对应的标准地址 这里面的大致思路跟本篇文章是类似的&#xff0c;不过上一篇文章有部分有瑕疵&#xff0c;就是在POI去找建筑面内的标准地址时&#xff0c;找到的虽然是建筑面内的&#xff0c;但是不一定是距离最近的&#…

C#__事件event的简单使用:工具人下楼问题

// 工具人类 namespace DownStair {delegate void DownStairDelegate(); // 定义了一个下楼委托class ToolMan{public string Name { get; set; } // 声明工具人的名字属性// public DownStairDelegate downStairDelegate null; // 初始化委托downStair为空委托// 解决方案pu…

【BASH】回顾与知识点梳理(二十七)

【BASH】回顾与知识点梳理 二十七 二十七. 磁盘配额(Quota)27.1 磁盘配额 (Quota) 的应用与实作什么是 QuotaQuota 的一般用途Quota 的使用限制Quota 的规范设定项目 27.2 一个 XFS 文件系统的 Quota 实作范例实作 Quota 流程&#xff1a;设定账号实作 Quota 流程-1&#xff1a…

iTOP-i.MX8M开发板添加USB网络设备驱动

选中支持 USB 网络设备驱动&#xff0c;如下图所示&#xff1a; [*] Device Drivers→ *- Network device support → USB Network Adapters→ {*} Multi-purpose USB Networking Framework 将光标移动到 save 保存&#xff0c;如下图所示&#xff1a; 保存到 arch/arm64/c…

springboot工程集成前端编译包,用于uni-app webView工程,解决其需独立部署带来的麻烦,场景如页面->画布->图片->pdf

前端工程 访问方式 http://127.0.0.1:8080/context/frontEnd/index放行 public class SecurityConfig extends WebSecurityConfigurerAdapter { "/frontEnd/**",SysFrontEndController import lombok.extern.slf4j.Slf4j; import nl.basjes.shaded.org.springfram…

Sentinel使用实例

不说了&#xff0c;直接上官方文档 https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md Sentinel Example 项目说明 本项目演示如何使用 Sentinel starter 完成 Spring Clo…

试岗第一天问题

1、公司的一个项目拉下来 &#xff0c;npm i 不管用显示 后面百度 使用了一个方法 虽然解决 但是在增加别的依赖不行&#xff0c;后面发现是node版本过高&#xff0c;更换node版本解决。 2、使用插件动态的使数字从0到100&#xff08;vue-animate-number插件&#xff09; 第一…

C++ 继承

1.继承的概念及定义 定义 定义格式 继承关系和访问限定符 继承基类成员访问方式的变化 1. 基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是 被继承到了派生类对象中&#xff0c;但是语法上限制派生类对象不管在类里面还是类外面…

JavaFx基础学习【四】:UI控件的通用属性

目录 前言 一、介绍 二、继承关系 三、常用通用属性 四、属性Properties 五、属性绑定 六、属性监听 七、事件驱动 八、其他章节 前言 如果你还没有看过前面的文章&#xff0c;可以通过以下链接快速前往学习&#xff1a; JavaFx基础学习【一】&#xff1a;基本认识_明…

探讨uniapp的生命周期问题

在uniapp中,生命周期函数分为应用生命周期函数、页面生命周期函数和组件生命周期函数. 1应用声明周期 应用生命周期函数只能在 App.vue 中监听有效&#xff0c;在其他页监听无效。 onLaunch&#xff1a;当uni-app 初始化完成时触发&#xff08;全局只触发一次&#xff09;on…

Jmeter性能测试系列-性能测试需求分析

性能测试需求分析 性能测试需求分析与传统的功能测试需求有所不同&#xff0c;功能测试需求分析重点在于从用户层面分析被测对象的功能性、易用性等质量特性&#xff0c;性能测试则需要从终端用户应用、系统架构设计、硬件配置等多个纬度分析系统可能存在性能瓶颈的业务。 性…

线上售楼vr全景看房成为企业数字化营销工具

在房地产业中&#xff0c;VR全景拍摄为买家提供了虚拟看房的全新体验。买家可以通过相关设备&#xff0c;远程参观各个楼盘的样板间和实景&#xff0c;感受房屋的空间布局和环境氛围&#xff0c;极大地提高了购房决策的准确性。对于房地产开发商和中介机构来说&#xff0c;VR全…

在不破坏原有隔离状态的情况下,怎么实现网间数据安全摆渡?

随着网络技术的演进&#xff0c;网络攻击、数据窃取、数据泄露事件也愈发频繁&#xff0c;给企业造成损失和负面影响&#xff0c;企业数据防泄漏治理是大趋势&#xff0c;也是自身迫切需求。 2021年1月&#xff0c;中国农业银行因存在数据泄露风险、互联网门户网站泄露敏感信息…

《起风了》C++源代码

使用方法 Visual Studio、Dev-C、Visual Studio Code等C/C创建一个 .cpp 文件&#xff0c;直接粘贴赋值即可。 #include <iostream> #include <Windows.h> #pragma comment(lib,"winmm.lib") using namespace std; enum Scale {Rest 0, C8 108, B7 …

分布式 - 服务器Nginx:一小时入门系列之代理缓冲与缓存

官方文档&#xff1a;https://nginx.org/en/docs/http/ngx_http_proxy_module.html 1. 代理缓冲 proxy_buffer 代理缓冲用于临时存储从后端服务器返回的响应数据。通过使用代理缓冲&#xff0c;Nginx可以在接收完整的响应后再将其发送给客户端&#xff0c;从而提高性能和效率…

数据挖掘全流程解析

数据挖掘全流程解析 数据指标选择 在这一阶段&#xff0c;使用直方图和柱状图的方式对数据进行分析&#xff0c;观察什么数据属性对于因变量会产生更加明显的结果。 如何绘制直方图和条形统计图 数据清洗 观察数据是否存在数据缺失或者离群点的情况。 数据异常的两种情况…

Mr. Cappuccino的第61杯咖啡——Spring之BeanPostProcessor

Spring之BeanPostProcessor 概述基本使用项目结构项目代码运行结果源代码 常用处理器项目结构项目代码执行结果 概述 BeanPostProcessor&#xff1a;Bean对象的后置处理器&#xff0c;负责对已创建好的bean对象进行加工处理&#xff1b; BeanPostProcessor中的两个核心方法&am…

React Dva项目小优化之redux-action

之前 我们讲过 models 接下啦 我们来给大家讲一个新的库 这个库的话 有最好 没有影响也不大 它主要是帮助我们处理 action的 我们直接在 GitHub 官网上搜索 redux-action 我们搜出来 第一个就是 从星数来看 还是非常优秀的 我们拉下来 找到这个Documentation 然后点击进去 进…

一、Dubbo 简介与架构

一、Dubbo 简介与架构 1.1 应用架构演进过程 单体应用&#xff1a;JEE、MVC分布式应用&#xff1a;SOA、微服务化 1.2 Dubbo 简介一种分布式 RPC 框架&#xff0c;对专业知识&#xff08;序列化/反序列化、网络、多线程、设计模式、性能优化等&#xff09;进行了更高层的抽象和…

BUUCTF [MRCTF2020]Ezpop解题思路

题目代码 Welcome to index.php <?php //flag is in flag.php //WTF IS THIS? //Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95 //And Crack It! class Modifier {protected $var;publi…