SpringBoot入门 快速创建并部署web后端

2023-10-28

这两天学习了springboot些框架开发,发现用它开发真的是简单便捷。就像是它的设计初衷所描述的那样,它虽然没有提出任何新的技术,但却将之前的spring技术集成了,他让spring变得更加好用。

于是将最近的学习内容总结一下,分享给大家。如有问题,敬请指教~


创建一个SpringBoot项目

tips:博主使用的开发环境是eclipse

我们使用maven来管理springboot项目,这样方便配置相关依赖(不用手动拷贝jar包真不戳)。

首先,创建一个maven项目:
在这里插入图片描述
先简单创建一个项目,不用其他原型:
在这里插入图片描述
填写项目坐标及父项目坐标。
这里我们要使用的是springBoot进行开发,所以父项目选择springBoot启动器项目。
当然这里也可以选择不进行父项目的配置,在生成项目后,仍可以在配置文件中配置父项目坐标。
在这里插入图片描述
于是我们就得到了一个maven项目:
在这里插入图片描述
打开pom.xml,可以看到项目的一些配置:
在这里插入图片描述
pom文件的全程是“project object model”也就是“项目对象模型”,是maven工程的灵魂。里面存放着项目坐标,父项目坐标,项目依赖等。

parent标签配置的就是父项目的坐标信息,这是在创建项目时填写的那个。

当然,如果再创建项目时没有填写父项目,也可以在创建项目后在这个文件中添加上父项目的配置

接着,项目需要springBoot启动器的支持,所以我们还需要配置一下springboot启动器的依赖,写法如下:
在这里插入图片描述
这个dependies标签包住的是所有项目会用到的依赖。以往这些依赖的jar包需要拷贝到项目下,现在maven会自动的去坐标处下载。

OK,到此一个springBoot的项目就创建完毕了!是不是很简单呢?
下面我们就让这个项目跑起来,并使用浏览器访问它。

让项目跑起来

让项目跑起来首先我们需要一个Controller,一会可以在前端进行访问,现在就先来创建一个controller:

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

@RestController
@RequestMapping("test")
public class TestContrller {

	@RequestMapping("hello.action")
	public String hello() {
		return "hello spring boot!!!";
	}
}

在这里插入图片描述
注:@RestController注解可以初步的理解为@ResponseBody@Contorller整合体,可以使得该类下的所有controller方法返回值转化成为json。

接着,我们编写springboot的启动入口。说到这里,springboot的优势之处就体现出来了,它集成了tomcat,不需要我们像传统的ssm框架那样将程序打成war包部署在tomcat中。而是直接像编写一个普通的java程序那样,提供一个主方法,并在其中调用特定的启动类启动程序即可。

下面我们就来实现主方法:

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

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

将这个带有主方法的启动类放置在controller等组件的父包下,以保证能够扫描到所有的组件。
在这里插入图片描述

编写启动类的关键步骤在于:

  1. 给启动类打上SpringBootApplication注解,表明其是一个springBoot应用
  2. 在主方法中调用SpringApplication类的run方法,并将启动类对象和运行参数穿进去

至于类名,到时没有什么强制性的要求,可以写成其他的名称,但是推荐使用Application。

然后运行这个程序,看到控制台如下输出:
在这里插入图片描述
服务端就成功启动了!!

是不是很方便呢?

下面,我们在浏览器访问一下刚才的controller,内部集成的tomcat端口号默认为8080:
在这里插入图片描述
nice!!!

配置文件

除了pom作为项目的核心配置文件决定了工程的模型,项目中还有一些配置是以参数的形式呈现的,例如端口号,数据库的链接信息等,他们的数值配置并不属于pom,但他们同样重要。

这些参数的配置都要被放在一个叫做application.properties的配置文件中。这个文件在工程创建时并没有,需要我们手动创建在src/main/resources下:
在这里插入图片描述

下面我们就将端口号配置成80端口,再次访问时就不需要写端口号了:
在这里插入图片描述

再次启动项目,访问localhost/test/hello.action:
在这里插入图片描述

nice!!!

静态资源的存放

对静态资源访问的响应也是服务端的功能之一。说白点,就是服务端要能存储一定的静态资源,再说白点,就是想html,css,js等代码能够存放到项目中并能够被访问到。

那么存放这些资源的地方有两个:

  • 一个是src/main/resources下的static文件夹中
  • 另一个是src/main下的webapp文件夹中

这两个目录下存放的静态资源都可以被访问到。

例如,将两个html的测试文件test1.html和test2.html文件分别放置到两个路径下

<!-- 测试文件1 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试文件1</title>
</head>
<body>
	<div>
		<p style="color:#ff0000;font-size:30px">测试文件1,存放在"src/main/resources/static"下</p>
	</div>
</body>
</html>

<!-- 测试文件2-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试文件2</title>
</head>
<body>
	<div>
		<p style="color:#ff0000;font-size:30px">测试文件2,存放在"src/main/webapp"下</p>
	</div>
</body>
</html>

运行程序,使用浏览器访问一下:
在这里插入图片描述

在这里插入图片描述
ok,到此一个非常简陋的服务端就能跑起来了,总体来说是非常便捷的,省去了很多原来使用spring的配置和服务器部署缓解。

后面的文章,我们进一步讨论的使用springBoot集成mybatis来连接数据库以及项目部署的问题。敬请期待呀。

记得给博主一键三连哦,你的支持是我最大的动力!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot入门 快速创建并部署web后端 的相关文章

  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • 在Spring中使用什么样的“EventBus”?内置、Reactor、Akka?

    我们将在几周后启动一个新的 Spring 4 应用程序 我们希望使用一些事件驱动的架构 今年 我到处读到有关 Reactor 的内容 在网上查找时 我偶然发现了 Akka 所以现在我们有3个选择 春天的ApplicationEvent ht
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • 当从服务类中调用时,Spring @Transactional 不适用于带注释的方法

    在下面的代码中 当方法内部 是从内部调用的方法外部 应该在交易范围内 但事实并非如此 但当方法内部 直接从调用我的控制器class 它受到事务的约束 有什么解释吗 这是控制器类 Controller public class MyContr
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • Calendar.getInstance(TimeZone.getTimeZone("UTC")) 不返回 UTC 时间

    我对得到的结果真的很困惑Calendar getInstance TimeZone getTimeZone UTC 方法调用 它返回 IST 时间 这是我使用的代码 Calendar cal Two Calendar getInstance
  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • 将 SignedHash 插入 PDF 中以进行外部签名过程 -workingSample

    遵循电子书第 4 3 3 节 PDF 文档的数字签名 https jira nuxeo com secure attachment 49931 digitalsignatures20130304 pdf 我正在尝试创建一个工作示例 其中 客
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐

  • Cisco的路由器、交换机设置 Console 密码和 Enable 密码

    进入特权模式 Switch gt en 进入全局模式 Switch conf t 修改设备名称 Switch config hostname SwPassWord 进入Console接口 line console 0 设置密码1 SwPas
  • 各种排序应用场合

    时间复杂度 O n n 插入排序 选择排序和冒泡排序 O nlogn 快速排序 堆排序和归并排序 影响排序效果的因素 待排序的数据规模 关键字的结构及其初始状态 稳定性的要求 语言工具的条件 存储结构 时间和辅助空间复杂度 应用场景 若n较
  • 【LeetCode刷题】228 汇总区间 java

    题目 给定一个 无重复元素 的 有序 整数数组 nums 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 也就是说 nums 的每个元素都恰好被某个区间范围所覆盖 并且不存在属于某个范围但不属于 nums 的数字 x 列表中的每个
  • tnscmd.pl

    usr bin perl tnscmd a lame tool to prod the oracle tnslsnr process 1521 tcp tested under Linux x86 OpenBSD Sparc perl5 I
  • jmockit使用

    官网 http jmockit github io tutorial Introduction html runningTests org jmockit jmockit jmockit version test maven surefir
  • 华为OD机试 - 数组组成的最小数字

    题目描述 给定一个整型数组 请从该数组中选择3个元素组成最小数字并输出 如果数组长度小于3 则选择数组中所有元素来组成最小数字 输入描述 一行用半角逗号分割的字符串记录的整型数组 0 lt 数组长度 lt 100 0 lt 整数的取值范围
  • c语言——指针的运用与表示

    指针 1 定义 基类型 指针变量名 2 赋值 int a int pa a int a pa a int p2 p2 a 两个运算符 取地址 后面操作数必须是变量 指针运算符 后面的操作数必须是指针 int a 3 int pa a a 正
  • python--文件的循环导入及模块查找顺序

    目录 文件循环导入问题 模块的查找顺序 验证模块查找顺序的方法 绝对导入与相对导入 文件循环导入问题 上一篇我们介绍了模块 文件的导入 现在重点讲一下文件的导入 两个文件彼此导入彼此 循环导入的时候极有可能出现某个名字还没有被创建就是用的情
  • Docker(linux container) 所依赖的底层技术

    Docker linux container 所依赖的底层技术 1 Namespace 用来做PID的隔离 有了namespace 在docker container里头看来 就是一个完整的linux的世界 在host看来 containe
  • Jmeter---BeanShell解析JSON格式的响应数据

    首先 分析一下接口的响应数据 了解接口返回数据的结构类型 如下数据所示 我们想要获取的是normalList里面的status值 但是响应结果是列表 可能是会存在多个记录 所以在实现过程中我们通过遍历normalList中的所有数据 或者是
  • JAVA 线上故障排查完整套路,从 CPU、磁盘、内存、网络、GC 一条龙!

    原文链接 https mp weixin qq com s MZOcDjKm4oy9mGEG3R QYA 作者 fredal https fredal xin java error check CPU 磁盘 内存 GC问题 网络 线上故障主
  • 获取网卡名称存入数组 对网卡执行相关操作

    背景 由于服务器网卡获取ip异常 需要对做bond网卡进行相关网络操作 bond网卡操作 正常执行nmlic命令 环境问题对要执行的网卡本身只有四行命令 为了防止出现多业务网卡和vlan主网卡的情况 这里选择自动获取bond网卡执行相关操作
  • 修改@vue/cli搭建的项目中默认icon图标

    今天使用 vue cli搭建了一个项目 然后想修改一下网页的icon图标 但是在public文件夹下直接替换图标 不会改变网页的icon图标 文件夹目录如下 用项目logo的icon文件替换原始的icon 重启项目还是vue默认的icon
  • 「面试题」20+Vue面试题整理

    微信搜索 前端食堂 你的前端食堂 记得按时吃饭 本文已收录在前端食堂 Github https github com Geekhyt front end canteen 感谢Star 从镜片的厚度和黄黑相见的格子衬衫我察觉到 面前坐着的这位
  • JS des加密解密

    引用库 des解密 function decryptByDES ciphertext var keyHex CryptoJS enc Utf8 parse 秘钥 var decrypted CryptoJS DES decrypt ciph
  • 《计算机网络基础与应用》笔记

    文章目录 前言 1 1认识网络 1 2 认识网络标准及通信协议 1 3认识数据通信技术 1 4选择网络的拓扑结构 2 1考察网络传输介质 2 2考察网络设备 2 3实现网络结构化布线系统 2 4配置网络设置 2 5实现局域网的硬件连接 3
  • 深度学习-图像识别FPN(Feature Pyramid Networks)

    文章目录 一 FPN 二 FPN的整体架构 FPN应用于RPN层 四 FPN总结 一 FPN 卷积网络的一个重要特征 深层网络容易响应语义特征 浅层网络容易响应图像特征 但是到了物体检测领域 这个特征便成了一个重要的问题 高层网络虽然能响应
  • InitializingBean讲解

    InitializingBean讲解 Spring中有两种类型的Bean 一种是普通Bean 另一种是工厂Bean 即FactoryBean 工厂Bean跟普通Bean不同 其返回的对象不是指定类的一个实例 其返回的是该工厂Bean的get
  • cx_Oracle使用方法

    正确安装好cx oracle之后 要使用它来连接到oracle数据库进行操作 具体应该分3步走 第一步 导入cx Oracle 建立连接 gt gt gt import cx Oracle 导入模块 gt gt gt db cx Oracl
  • SpringBoot入门 快速创建并部署web后端

    这两天学习了springboot些框架开发 发现用它开发真的是简单便捷 就像是它的设计初衷所描述的那样 它虽然没有提出任何新的技术 但却将之前的spring技术集成了 他让spring变得更加好用 于是将最近的学习内容总结一下 分享给大家