SpringBoot教程(二) | 创建SpringBoot项目

SpringBoot教程(二) | 创建SpringBoot项目

接下来我们要学习一下如何创建一个spring boot项目。 我们采用的环境信息

JDK1.8

Maven 3.6

Idea 2021.1

所谓spring Boot项目,其实本质上就是一个maven/gradle项目,这是里面通过引入springBoot专门设置好的依赖,完成整个项目开发流程的简化。所以我们就先创建一个maven 项目即可。当然也可以采用 spring initiallizer进行创建(需联网)。

我们就用创建普通maven项目的方式来演示。

打开我们的idea, 创建一个新的项目: 项目名称: springboot-learning

1. 创建maven项目:

image.png

2. 填写项目名称

image.png 当然这些名称也可以大家按照自己的习惯进行定义。

3. 添加依赖

点击Finish以后,其实我们的maven项目就已经创建完毕了,但是它现在还不是一个spring boot的项目,我们需要把它变成一个spring boot项目。其实就是添加一下依赖即可。我们创建好的项目结构如下。

image.png

接下来是添加依赖,让其成为springBoot项目。 添加的方式有两种,一个是通过继承springBoot项目的方式,一种是在 标签中添加依赖。

继承的实现方式:

在pom文件中添加如下依赖

xml复制代码<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.2</version><relativePath/> <!-- lookup parent from repository --></parent>

然后点击项目右侧maven的刷新按钮,等到依赖下载完毕就可以了。前提是maven一定要配置正确。

完整pom.xml如下:

xml复制代码<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.2</version><relativePath/> <!-- lookup parent from repository --></parent><modelVersion>4.0.0</modelVersion><groupId>com.lsqingfeng.springboot</groupId><artifactId>springboot-learning</artifactId><version>1.0.0</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties></project>

当然如果我们不想采用继承的方式,或者由于我们的项目需要继承公司内部的一些组件而导致无法再继承其他项目,我们也可以采用下面这种方式。

xml复制代码<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.6.2</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

就是在 中添加依赖。完整pom如下:

xml复制代码<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lsqingfeng.springboot</groupId><artifactId>springboot-learning</artifactId><version>1.0.0</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.6.2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
</project>

但是要注意上面我们只是引用了springBoot的依赖管理,但是还并没有进行使用,所有我们当前真正依赖的jar包还没有。接下来我们就可以按需添加。比如我们现在要进行web的开发,那么我们就需要有引入web相对应的依赖。 在pom 文件中添加 依赖。

xml复制代码<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

添加后的完整pom

xml复制代码<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lsqingfeng.springboot</groupId><artifactId>springboot-learning</artifactId><version>1.0.0</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.6.2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

这里无需写版本号,因为我们已经引入了springBoot的版本号2.6.2. 在他的统一pom文件中已经对所有的经常使用的模块做了统一的依赖管理。感兴趣的可以点进去springBooot的pom中去看看。

image.png

4. 创建启动类

添加完依赖之后,我们的项目就已经是spring boot 项目了,接下来我们来启动这个项目。首先在src/main/java下创建一个包: com.lsqingfeng.springboot,然后在这个包下在创建一个类名字就叫

SpringBootLearningApplication. 注意千万别叫SpringBootApplication, 或者SpringApplication这类的名字,因为很容易跟springBoot中的类名重复,导致一些莫名其妙的错误。结构如下:

image.png

5. 开发启动类程序,启动项目。

在刚刚创建的启动类中写一个main方法,添加一个注解就可以了。具体代码如下:

java复制代码package com.lsqingfeng.springboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @className: SpringBootLearningApplication* @description: springboot启动类* @author: sh.Liu* @date: 2022-01-10 14:36*/
@SpringBootApplication
public class SpringBootLearningApplication {public static void main(String[] args) {SpringApplication.run(SpringBootLearningApplication.class, args);}
}

开发完之后,我们直接运行这个main方法,这个项目就已经启动了。端口号是8080,只不过我们还没有写任何的接口而已。

image.png

通过上面的日志,我们不难判断出,这是使用的web容器是tomcat, 启动的端口号是8080。

但是初学者可能会有疑惑,没什么是tomcat呢,我们也没有依赖tomcat啊,哪里出来的呢,这就是springBoot带来的好处,我们仅仅依赖了一个 spring-boot-starter-web 这个依赖,就可以启动web程序了,其实,玄妙之处,都在这个依赖里,springBoot已经帮我们把web常用的依赖都打入到了spring-boot-starter-web 中,这样多余的事情就不需要我们关心了。像tomcat其实也包含在了这个依赖当中。我们可以去看一看。

spring-boot-starter-web

xml复制代码<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><!-- This module was also published with a richer model, Gradle metadata,  --><!-- which should be used instead. Do not delete the following line which  --><!-- is to indicate to Gradle or any Gradle module metadata file consumer  --><!-- that they should prefer consuming it instead. --><!-- do_not_remove: published-with-gradle-metadata --><modelVersion>4.0.0</modelVersion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.6.2</version><name>spring-boot-starter-web</name><description>Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container</description><url>https://spring.io/projects/spring-boot</url><organization><name>Pivotal Software, Inc.</name><url>https://spring.io</url></organization><licenses><license><name>Apache License, Version 2.0</name><url>https://www.apache.org/licenses/LICENSE-2.0</url></license></licenses><developers><developer><name>Pivotal</name><email>info@pivotal.io</email><organization>Pivotal Software, Inc.</organization><organizationUrl>https://www.spring.io</organizationUrl></developer></developers><scm><connection>scm:git:git://github.com/spring-projects/spring-boot.git</connection><developerConnection>scm:git:ssh://git@github.com/spring-projects/spring-boot.git</developerConnection><url>https://github.com/spring-projects/spring-boot</url></scm><issueManagement><system>GitHub</system><url>https://github.com/spring-projects/spring-boot/issues</url></issueManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.6.2</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-json</artifactId><version>2.6.2</version><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>2.6.2</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.3.14</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.14</version><scope>compile</scope></dependency></dependencies>
</project>

这个就是spring-boot-starter-web 中包好的所有依赖了,里面有tomcat, webmvc, json。这就是springBoot带来的按需加载的好处,并且整个项目,我们只写了一个启动了,加了一个注解就完成了,springBoot完全简化了配置。 我们访问一下8080

image.png

报了404,虽然报错了,因为我们没有写任何的接口,但是出现这个页面起码证明了我们服务已经启动了。

好了本篇内容就到这。后面我们继续深入学习。

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

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

相关文章

JSP-概念

一、引子 很多读者可能听过JSP&#xff0c;并且知道这是一门过时的技术了。在Spring&#xff0c;SpringBoot已经成为主流的今天&#xff0c;笔者为什么还要介绍JSP的相关内容呢&#xff1f;笔者常常提到一个概念&#xff1a;理解一门技术&#xff0c;要理解这个技术为什么产生…

gin使用教程

文章目录 1、下载并安装 gin&#xff1a;2、快速例子3、示例3.1、AsciiJSON3.2、HTML 渲染3.3、JSONP3.4、Multipart/Urlencoded 绑定3.5、Multipart/Urlencoded 表单3.6、PureJSON3.7、Query 和 post form3.8、SecureJSON3.9、XML/JSON/YAML/ProtoBuf 渲染3.10、上传文件3.10.…

sqli-labs关卡23(基于get提交的过滤注释符的联合注入)

文章目录 前言一、回顾前几关知识点二、靶场第二十三关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不能随意去…

给 Linux 主机添加 SSH 双因子认证

GitHub&#xff1a;https://github.com/google/google-authenticator-android 在信息时代&#xff0c;服务器安全愈发成为首要任务。Linux 主机通过 ssh 方式连接&#xff0c;当存在弱密码的情况下&#xff0c;通过暴力破解的方式会很容易就被攻破了&#xff0c;本文将向你展示…

国科大软件安全原理期末复习笔记

1 软件安全总论 1.软件的三大特性&#xff1a;复杂性、互连性、可扩展性&#xff1b; 2.基本概念&#xff1a;缺陷、漏洞、风险 缺陷&#xff08;bug&#xff09;&#xff1a;软件在设计和实现上的错误&#xff1b;漏洞&#xff08;vulnerability&#xff09;&#xff1a;漏洞…

解决虚拟机字体太小的问题

在win11中&#xff0c;安装VMWare软件后&#xff0c;创建好虚拟机&#xff0c;打开终端后&#xff0c;发现终端里显示的字体太小&#xff0c;不方便使用&#xff0c;因此需要修改。 1、打开终端 2、输入"gsettings set org.gnome.desktop.interface text-scaling-factor…

代码随想录算法训练营第五十二天|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

代码随想录算法训练营第五十二天|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组 最长递增子序列 300.最长递增子序列 文章讲解&#xff1a;https://programmercarl.com/0300.%E6%9C%80%E9%95%BF%E4%B8%8A%E5%8D%87%E5%AD%90%E5%BA%8F%E5%88%97.html 题目链…

Android 13.0仿ios的hotseat效果修改hotseat样式

1.概述 在13.0系统产品rom定制化开发中,在项目需求的需要,系统原生Launcher的布局样式很一般,所以需要重新设计ui对布局样式做调整,产品在看到 ios的hotseat效果觉得特别美观,所以要仿ios一样不需要横屏铺满的效果 居中显示就行了,所以就要看hotseat的具体布局显示了 效…

【MATLAB】CEEMD+FFT+HHT组合算法

代码原理 CEEMD&#xff08;集合经验模态分解&#xff09;FFT&#xff08;快速傅里叶变换&#xff09;HHT&#xff08;希尔伯特-黄变换&#xff09;组合算法也是一种常见的信号处理和分析方法。这种组合算法结合了CEEMD、FFT和HHT三个步骤&#xff0c;可以处理非线性和非平稳信…

react中概念性总结(三)

目录 React中事件绑定函数的方法有哪些? 函数如何传递参数&#xff1f; 什么是重绘与回流&#xff0c;触发条件&#xff0c;如何减少回流和重绘 React 生命周期中 getDerivedStateFromProps怎么使用&#xff0c;怎么理解&#xff1f; React中路由单页面应用的优缺点都有哪些…

Vue3+Vite项目搭建

为什么选择vite而不是vue-cli&#xff1a; vite下一代前端开发与构建工具 vite创建的项目默认vue3 优势&#xff1a; 开发环境中&#xff0c;无需打包&#xff0c;可快速的冷启动 轻量快速的热重载&#xff08;HMR&#xff09; 真正的按需编译&#xff0c;不在等待整个应用…

Android中两种选择联系人方式

1.在选择联系人方式网上也有很多案例 有的说是使用ContactsContract.CommonDataKinds.Phone.CONTENT_URI也有的说是使用ContactsContract.Contacts.CONTENT_URI其实这两种方式都可以使用 只不过ContactsContract.Contacts.CONTENT_URI这种方式需要多查询一遍 一、使用Contacts…

23. 合并 K 个升序链表(递归分治)

这是我的第一个自己ak的分治题目&#xff01;&#xff01;&#xff01;好耶&#xff01;&#xff01;&#xff08;骄傲脸 思路参考&#xff1a;148. 排序链表&#xff08;归并排序&#xff09; /*** Definition for singly-linked list.* public class ListNode {* int v…

龙芯系统部署Elasticsearch

1.配置JDK环境 #查看是否安装jdk java -version#搜索java&#xff0c;结果&#xff1a;/usr/bin/java whereis java#&#xff08;1&#xff09;配置环境变量(临时有效) export JAVA_HOME/usr export PATH$PATH:$JAVA_HOME/bin#&#xff08;2&#xff09;配置环境变量(永久有效…

DA14531-高级应用篇-用户如何开启OTA服务

文章目录 1. OTA相关文件2.OTA宏定义列表3.OTA主要函数接口4.OTA具体实施步骤5.总结1. OTA相关文件 1)app_suotar_task.c和app_suotar_task.h 2)app_suotar.c和app_suotar.h 2.OTA宏定义列表 宏定义注解CFG_PRF_SUOTAR用户开启SOTA功能BLE_SUOTA_RECEIVERSOTA功能服务CFG_S…

把树状数组在页面显示成‘/‘/‘形式,并搜索想要的值

大概思路 在Vue中&#xff0c;若要将树状数组以类似于文件路径的形式&#xff08;即“/”分隔&#xff09;显示在页面上&#xff0c;可以按照以下步骤操作&#xff1a; 首先&#xff0c;假设您有一个树状数组&#xff0c;其结构可能如下所示&#xff1a; const treeData [{…

浅谈专项测试之弱网络测试

一&#xff0e;弱网络测试背景 移动端产品的使用并非完全都是在流畅的wifi环境&#xff0c;大部分用户主要使用4G,3G,2G等网络&#xff0c;另外因为移动端产品使用的场景多变&#xff0c;如进公交&#xff0c;上地铁&#xff0c;坐电梯&#xff0c;使得弱网测试显得尤为重要。考…

QT-JSON相关API/QJsonDocument/QJsonObject

QJsonObject类的相关操作 格式化排版创建JSON对象&#xff0c;使用字符串创建JSON对象&#xff0c;使用标准JSON对象获取JSON对象中的值&#xff0c;非数组获取JSON对象中的值&#xff0c;数组 格式化排版 下面的代码将一个符合JSON格式的字符串&#xff0c;格式化成具有缩进格…

HCIA基础知识

IP地址、静态路由、动态路由、交换机 OSPF RIP DHCP VLAN ACL NAT OSI TCP/IP UDP TCP 三次握手&#xff0c;四次挥手&#xff0c;报头 什么是网络&#xff1f; 由网络连接设备通过传输介质将网络终端设备连接起来&#xff0c;进行资源共享、信息传递的平台。 OSI七…

【C】函数指针 int (*addPtr)(int, int);

目录 函数指针1&#xff09;定义2&#xff09;声明和赋值3&#xff09;通过函数指针调用函数4&#xff09;用途&#xff1a;函数指针作为函数参数5&#xff09;函数名和函数指针6&#xff09;复杂一点的例子 函数指针 1&#xff09;定义 在C语言中&#xff0c;函数指针是指向…