SpringBoot教程(三) | Spring Boot初体验

SpringBoot教程(三) | Spring Boot初体验

上篇文章我们创建了SpringBoot 项目,并且进行了简单的启动。整个项目了里其实我们就动了两个文件,一个是pom.xml负责管理springboot的相关依赖,一个是springBoot的启动类。

pom文件中通过starter的形式大大简化了配置,不像以前一样需要引入大量的依赖配置,搞不好还得解决冲突。 启动类里就一个main方法,让我们通过一个简单的注解,就可以启动整个项目。相比于之前的ssm简直不要太香。

3.1 Controller开发

那么接下来我们就在这个项目的基础之上来开发一个接口。这里就需要大家要有springmvc的学习基础了。在springmvc中接口的开发都是以controller的形式出现的,那么接下来我们在我们的包结构下创建一个controller包,然后在包里创建一个controller类。

结构如下:

image.png FirstController中全部内容;

java复制代码package com.lsqingfeng.springboot.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @className: FirstController* @description: 第一个Controller* @author: sh.Liu* @date: 2022-01-10 15:21*/
@RestController
public class FirstController {@RequestMapping("/hello")public String helloWorld(){return "hello world";}
}

重新clean, package, 运行启动类。

在浏览器访问: http://localhost:8080/hello

结果如下:

image.png

代表我们的接口已经开发完成,并成功返回了数据。其实上面这些操作完全就是springMvc框架中的内容了,经过前面的配置,相当于我们已经可以在框架中完全使用springmvc了。

3.2 一些问题

1. 关于包扫描

大家都知道,我们在使用ssm的时候,是需要配置一个要扫描的基础包的。一般可以在spring的配置文件的xml中,也可以自通过@ComponentScan注解进行配置。只有配置了相应的包的扫描,那么被扫描的包中的 带有 @Controller, @Service, @Repository, @Component 等注解的类才能够被spring管理,那我们的springBoot项目中并没有配置包的扫描,为什么 我们的Controller能够被扫描到呢(这个Contrller肯定是被扫描到了,否则程序就不可能生效)?

这是因为SpringBoot有一套默认的包扫描规则,当我们没有配置对应的ComponentScan 的时候,程序默认扫描启动类所在的包及其子包。 由于我们创建的controller包正是在启动类所在包下面的一个子包里,所以里边的FirstController可以别扫描到。

当然我们也可以通过@ComponentScan 注解去配置我们想要扫描的包。但是要注意不能在启动类上写,因为启动类上的@SpringBootApplication 注解中已经包含了@ComponentScan注解,那如果我们想要配置应该怎么办呢,那就需要我们自己写一个配置类了。

image.png

2. 修改端口号

目前项目启动的默认端口号是8080, 这也是springBoot的一个特点,预设了很多默认值。当然如果我们想要修改可以可以的。修改端口号,需要我们在配置文件中进行指定。springBoot默认的配置文件名是application.properties ,我们也可以使用yml格式的配置文件,就是application.yml 这两种都可以,但是最好不要同时存在。配置文件生效的位置有很多。最常用的就是直接放到resources 目录下,其实就是我们的classPath下。

目前使用yml格式的比较多,我们也已yml格式的为例。 通过server.port 来修改端口号。

image.png

如果使用properties写法如下

image.png

注意二者区别。yml中通过 缩进来表达层级关系。 properties文件通过.来表达,用=赋值。

修改完之后,clean. package 启动,端口号就生效了。注意,二者尽量不要同时存在。如果非要同时存在,properties文件的优先级更高。

image.png 当然配置文件中其实不光是可以修改端口号的,很多配置都可以在这里修改。比如数据库的连接,一些变量的定义等。

3. 关于 @RestController

我们在开发Controller的时候,在类上用的是@RestController注解,这个注解如果大家用过springMvc的肯定了解,它就是 @ResponseBody 和 @Controller注解的混合。

image.png

代表这是一个Controller 并且以json的形式进行返回。由于目前主流的项目方式都是前后端发离的形式,后端只需负责返回接口数据即可,无需处理页面跳转等逻辑。所以后端的接口基本都使用@RestController返回数据即可。

也正是上面的原因,所以springBoot整合 jsp,整合 thymeleaf,整合 freemarker等技术,这里也都不讲了,因为用这个实在太少了。 前后端分离已成为主流。

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

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

相关文章

扫雷游戏【可展开一片,超详细,保姆级别,此一篇足够】

一、C语言代码实现的扫雷游戏的运行 C语言实现扫雷 二、扫雷游戏的分析与设计 1.扫雷游戏的界面设计 在玩家玩扫雷的时候,它会给你一个二维的棋盘(下面的讲解都以9x9规格为例子),然后点击你想排查的坐标,若不是雷的&…

【Linux】第二十九站:再谈进程地址空间

文章目录 一、一些疑问二、程序没有加载前的地址(程序)三、程序加载后的地址四、动态库的地址 一、一些疑问 什么是虚拟地址?什么是物理地址?CPU读到的指令里面用的地址,是什么地址?? 我们之前在使用动态…

记录汇川:H5U与Factory IO测试14

现实53工位的物料运输。 设置了自动连续存启动:就是一个一个运,按照顺序将空的货架填满。 设置了自动连续存停止:就是完成当前循环后退出。 设置了自动连续取启动:就是一个一个运,按照顺序将有货的货架清空。 设置…

如何在Docker中搭建MinIO容器并实现无公网ip远程访问本地服务

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…

Android Studio安装超详细步骤(包括SDK安装不成功,模拟器无法创建等问题)

本文主要介绍CPU为AMD锐龙和英特尔两种类型在安装中出现的一些问题,两种解决的方案不同,所以首先查看属于哪种,然后找相对应的安装方法。 Android Studio的安装需要准备两个安装文件,一个是java JDK ,一个是Android Studio均可在官…

kubesphere DevOps部署SpringCloud项目

🍎devops部署SpringCloud项目 🍅环境说明🍅部署流程🧁创建DevOps工程🧁填写流水线信息🧁创建流水线 🍅部署应用所需脚本🧁jenkinsfile🧁Dockerfile🧁deploy.y…

如何才能把图片无损放大?这几个无损放大的方法分享给你们

在互联网的浩瀚海洋里,我们常常迷失在繁星般的图片之中,寻找那一款能映照出我们内心的头像。无论是渴望在社交媒体上熠熠生辉,还是在游戏世界中塑造独一无二的形象,一个与我们心灵相通的头像总能带给我们难以言喻的喜悦与满足。然…

【动态规划】【滑动窗口】【C++算法】 629K 个逆序对数组

作者推荐 【矩阵快速幂】封装类及测试用例及样例 本文涉及知识点 动态规划 C算法&#xff1a;滑动窗口总结 LeetCode629: K 个逆序对数组 逆序对的定义如下&#xff1a;对于数组 nums 的第 i 个和第 j 个元素&#xff0c;如果满足 0 < i < j < nums.length 且 nu…

0、C++预备知识

文章目录 C与C语言为什么要学习CC为什么难学c值得学习的新特征C参考书籍开发工具 可移植性和标准程序创建的技巧编译和链接 C与C语言 C是一种计算机高级程序设计语言&#xff0c;C既可以进行C语言的过程化程序设计&#xff0c;又可以进行以抽象数据类型为特点的基于对象的程序…

蓝莓产量预测(R语言版)

数据描述 字段名 描述 字段名 描述 id 蓝莓唯一标识 MinOfUpperTRange 花期内最高温带日平均气温的最低记录, Clonesize 蓝莓克隆平均大小 AverageOfUpperTRange 花期内最高温带日平均气温, Honeybee 蜜蜂密度 MaxOfLowerTRange 花期内最低温带日平均气温的最…

linux高级篇基础理论十二( 自动化运维工具Ansible )

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xff1a;云计算技…

vue-quill-editor 图片放大缩小 及富文本解析 放大图片预览

接上回 巴阿这是上一篇博客的标题 《vue vue-quill-editor 富文本编辑器 &#xff08;图片问题&#xff09;拦截粘贴动作 将粘贴的图片上传服务器 一个页面渲染多个富文本编辑器&#xff08;使用场景循环遍历 个数不定&#xff09;》 上篇传送门 需求1.编辑框里图片可放大缩…

什么是DNS(域名系统)

域名系统&#xff08;DNS&#xff09;像是互联网的电话簿&#xff0c;将人们容易记住的网址转换成计算机能理解的IP地址。 没有DNS&#xff0c;我们就需要记住复杂的数字序列来访问网站 DNS的基本概念 定义&#xff1a;DNS是一个分布式数据库&#xff0c;它将域名&#xff08…

阿里云服务器ECS性能与优势,为什么国内第一云?

为什么选择阿里云&#xff1f;阿里云服务器有哪些优势&#xff1f;阿里云全球第三&#xff0c;国内第一云&#xff0c;阿里云服务器网aliyunfuwuqi.com分享云服务器ECS在丰富ECS实例架构、弹性灵活、稳定可靠、便捷易用、安全保障和成本优化多方面优势&#xff1a; 阿里云服务…

BSP-D2000平台调试CM9434串口芯片

1.硬件原理图 原理图显示两块9434的INT分别接到D2000的GPIO0_A3和GPIO0_A5. 2.配置 2.1 设备树 gpio <&pio 1 1 1 1 1 0>;| | | | | | | || | | | | | | ------表示有效电平| | | | | | | | | …

走迷宫之推箱子

前言&#xff1a; 在上一篇文章当中我介绍了一个走迷宫的写法&#xff0c;但是那个迷宫没什么可玩性和趣味性&#xff0c;所以我打算在迷宫的基础上加上一个推箱子&#xff0c;使之有更好的操作空间&#xff0c;从而增强了游戏的可玩性和趣味性。 1. 打印菜单 void menu() {…

探索 Python:发现有趣的库——第 1 章:数据可视化之旅

在一个充满活力的科技世界中&#xff0c;数据分析专家“算法仙”和编程爱好者“代码侠”相遇了&#xff0c;决定一起踏上数据可视化的探险之旅。他们将运用 Matplotlib 和 Seaborn 这两个强大的 Python 库&#xff0c;将枯燥的数据转化为生动的图形。 算法仙&#xff1a;你好&…

Kafka 的 Consumer Group 解读

作为一份笔记&#xff0c;本文再次梳理一下 Kafka 的 Consumer Group。我们知道&#xff0c;一个 Topic 往往会有多个 Partition&#xff0c;一条消息只会被写到一个 Kafka 的 Partition 中&#xff0c;那 Consumer 是怎么消费 Message 的呢&#xff1f; Consumer Group 又从中…

如何低成本打造高效跨国企业内网

随着企业数字化转型的加速&#xff0c;企业对网络连接、安全性和可靠性的需求也变得越来越高&#xff0c;最近小编收到了好几封私信&#xff0c;咨询跨境企业内部组网方案。 投稿的是某跨国公司的IT运维人员&#xff0c;总部在海外&#xff0c;国内分支机构每天都需要进行数据互…

[Android]实现一个权限申请类

[Android]实现一个权限申请类 导言 在引入了动态权限申请之后&#xff0c;Android的权限申请就变得尤为繁琐&#xff0c;若是按照原有的方法一板一眼地进行申请&#xff0c;样板代码未免太多。因此本篇文章就使用ActivityResult API&#xff0c;来实现一个简单的权限申请类来帮…