实现springboot的简单使用~

在之前学习Spring+SpringMVC+Mybatis框架时,我们学习了多种配置spring程序的方式,例如:使用XML,注解,Java配置类,或者是将它们结合使用,但配置文件配置起来依然过于复杂,而我们接下来要学习的SpringBoot就帮助我们解决了这个问题,它是帮助我们简单,快速地创建一个独立的,生产级别的Spring应用它的底层也是Spring,大多数SpringBoot应用只需要编写少量配置即可快速整合Spring平台以及第三方技术,表现在开箱即用设置可修改的,合理的默认值提供一系列大型项目通用的非功能性程序,并且约定大于配置,基本不需要主动编写配置类也不需要XML配置文件

总的来说SpringBoot存在的意义就是为了简化开发简化配置简化整合简化部署简化监控简化运维

系统要求:

maven     3.6.3或者更高版本
java    1.8+

版本过低的小伙伴记得去下载更高的版本哦

MAVEN传送门

JDK传送门

实现springboot的使用:

创建maven工程:

第一步:创建Empty Project,注意不是New Project

在这里插入图片描述

第二步:在上述创建完成的项目中右击添加Maven模块,如下所示

在这里插入图片描述

配置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>org.example</groupId><artifactId>SpringBoot1</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--引用springBoot父项目,springboot的父项目提供了一些默认的配置和依赖管理--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version></parent><dependencies><!--导入该依赖可获得web场景的各种依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

在springboot中依赖不需要写版本是因为它在父依赖中将所有jar包的依赖版本都声明好了,且它们之间并不会发生冲突。

启动器Starter有什么作用?

它是一组预定义的依赖项集合,旨在简化spring应用程序的配置和构建过程,它包含了一组相关的依赖项,以便在启动应用程序时,自动导入所需的库,配置和功能。

1:简化依赖:通过管理和捆绑一组相关的依赖项,减少了手动解析和配置依赖项的工作,只要导入一个相关的starter依赖,即可获得应用程序所需的全部依赖

2:自动配置:它能够在应用程序启动时自动配置所需的组件和功能,通过根据类路径和其他设置的自动检测,从而使应用程序的配置变得简单和维护成本降低。

官方提供的场景:命名为:spring-boot-starter-*
第三方提供场景:命名为: *-spring-boot-starter

在这里插入图片描述

创建访问类:

@springbootApplication是springboot启动类上的一个注解,是一个组合注解,也就是由其他注解组合起来,组成该注解的作用也被赋予给@springbootApplication,它的主要作用是标记说明这个类是springboot的主配置类,springboot可以运行这个类里面的main()方法来启动程序

主要由三个子注解组成:

@SpringBootConfiguration:
@EnableAutoConfiguration
@ComponentScan

启动类:

package com.springboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class MainApplication {public static void main(String[] args) {SpringApplication.run(MainApplication.class);}
}

接下来我们想实现访问控制方法,将该方法的返回值显示在浏览器上

package com.springboot.Controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
//@RestController是一个组合注解,其中包含@ResponseBody@Controller,因此我们只需要写该注解即可
@RestController
//@ResponseBody
//@Controller
public class HelloSpringboot {@RequestMapping("/hello")public String showMessage(){return "Hello springboot2";}
}

注:@ResponseBody注解的作用

将方法的返回值直接作为HTTP响应的内容返回给客户端,而不是将返回值视为视图名,再通过视图解析器解析为视图。

我们启动项目,当控制台输出如下所示,即为项目启动成功!

在这里插入图片描述

浏览器中访问结果如下所示:

在这里插入图片描述

和之前整个的配置相比较,springboot是不是很方便呢,但需要注意的是,springboot只是能为我们快速搭建一个项目,但是它底层依然还是沿用springmvc,
mybatis,spring的内容

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

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

相关文章

虚拟机VMware的使用流程以及出现的问题附解决方法

虚拟机VMware的使用流程以及出现的问题附解决方法 下载安装 略。。。 创建虚拟机 虚拟机的设置如下&#xff1a;注意网络适配器为NAT 如果出现ip addr 命令&#xff1a;不显示IP地址的话&#xff1a; 解决方式如下&#xff1a; 首先设置网卡&#xff1a;先查看一下onboot是…

软件工程与计算总结(三)示例项目描述

本节介绍一个标准的项目描述&#xff0c;大家可以作为蓝本学习~ 目录 一.背景 二.目标 三.系统用户 四.用户访谈要点 1.收银员 2.客户经理 3.总经理 4.系统管理员 五.项目实践过程 一.背景 A是一家刚刚发展起来的小型连锁商店&#xff0c;其前身是一家独立的小百货门面…

贪心算法+练习

正值国庆之际&#xff0c;祝愿祖国繁荣昌盛&#xff0c;祝愿朋友一生平安&#xff01;终身学习&#xff0c;奋斗不息&#xff01; 目录 1.贪心算法简介 2.贪心算法的特点 3.如何学习贪心算法 题目练习&#xff08;持续更新&#xff09; 1.柠檬水找零&#xff08;easy&…

ES6中数组的扩展

1. 扩展运算符 用三个点(...)表示&#xff0c;它如同rest参数的逆运算&#xff0c;将数组转为用逗号分隔的参数序列。扩展就是将一个集合分成一个个的。 console.log(...[1, 2, 3]); // 1, 2, 3可以用于函数调用 扩展运算符后还可以放置表达式 ...(x > 0 ? [a] : [])如…

YOLOv2解析 | 批归一化 锚 主干网

文章目录 1 改进1.1 Batch Normalization 批归一化1.2 High Resolution Classifier 更高分辨率的分类器1.3 **Convolutional With Anchor Boxes 带锚盒的卷积**1.4 Dimension Clusters 维度集群1.5 更深更宽的主干网络1.6 Fine-Grained Features** **细粒度特征 **1.,7 Multi-S…

Altium Designer 批量添加元器件后缀

Altium Designer 批量添加元器件后缀 方法一方法二可能出现的问题要注意 方法一 您可以使用 Altium Designer 中的“批量修改元器件名称”功能来批量添加元器件后缀。具体步骤如下&#xff1a; 1.为了方便显示 操作流程&#xff0c;我这里复制了几个原理图的文件&#xff0c;粘…

剑指offer——JZ22 链表中倒数最后k个结点 解题思路与具体代码【C++】

一、题目描述与要求 链表中倒数最后k个结点_牛客题霸_牛客网 (nowcoder.com) 题目描述 输入一个长度为 n 的链表&#xff0c;设链表中的元素的值为 ai &#xff0c;返回该链表中倒数第k个节点。 如果该链表长度小于k&#xff0c;请返回一个长度为 0 的链表。 数据范围&…

好奇喵 | Surface Web ---> Deep Web ---> Dark Web

前言 我们可能听说过深网(deep Web)、暗网(dark Web)等名词&#xff0c;有些时候可能会认为它们是一个东西&#xff0c;其实不然&#xff0c;两者的区别还是比较大的。 什么是deep web&#xff1f; 深网是网络的一部分&#xff0c;与之相对应的是表层网络&#xff08;surface …

jsbridge实战2:Swift和h5的jsbridge通信

[[toc]] demo1: 文本通信 h5 -> app 思路&#xff1a; h5 全局属性上挂一个变量app 接收这个变量的内容关键API: navigation代理 navigationAction.request.url?.absoluteString // 这个变量挂载在 request 的 url 上 &#xff0c;在浏览器实际无法运行&#xff0c;因…

Spring事务

事务概念 逻辑上的一组操作&#xff0c;要么都成功、要么都失败 典型案例&#xff1a;银行转账 事务特性&#xff1a;ACID【原子、一致、隔离、持久】 搭建环境 银行转账操作 web&#xff1a; service&#xff1a;逻辑操作&#xff0c;调用dao dao&#xff1a;创建两个方法 …

强化学习环境 - robogym - 学习 - 2

强化学习环境 - robogym - 学习 - 2 文章目录 强化学习环境 - robogym - 学习 - 2项目地址为什么选择 robogymRearrange - 环境部分介绍Robot Control Interface - 机器人控制接口Environment - listEnvironment Randomization - 接口设置 项目地址 https://github.com/openai…

PAT(Basic Level) Practice(中文) 1015德才论

前言 ※ PTA是 程序设计类实验辅助教学平台 &#xff0c;里边包含一些编程题目集以供练习。 这道题用java解&#xff0c;我试了三种解法&#xff0c;不断优化&#xff0c;但始终是三个测试点通过、三个测试点超时。我把我的代码放在这里&#xff0c;做个参考吧。 1015 德才…

获取上证50的所有股票代码

我们可以从网页&#xff08;板块 - 上证50_ - 股票行情中心 - 搜狐证券&#xff09;中获取&#xff0c; 然后打印出来&#xff1a; import requests from bs4 import BeautifulSoupurl "https://q.stock.sohu.com/cn/bk_4272.shtml" response requests.get(url) …

junit @ExcludePackages排除多个包

在JUnit中&#xff0c;可以使用ExcludePackages注解来排除多个包。该注解可以用在测试类或测试方法上。 如果要排除多个包&#xff0c;可以在ExcludePackages注解的value属性中使用数组来指定要排除的包名。例如&#xff0c;要排除包com.example.package1和com.example.packag…

秋招问题记录贴

最近面试有点多&#xff0c;没来的及写面经&#xff0c;就单独开个帖子记录一下碰到的一些不懂的技术问题&#xff1a; AQS中两个队列如何工作&#xff0c;这个结合os中阻塞和就绪两种情况讲分布式的理解&#xff0c;这个问的频率很高nacos怎么进行服务注册和发现的mysql什么情…

TcpConnection的读写操作【深度剖析】

文章目录 前言一、TcpConnection的读二、TcpConnection的写三、TcpConnection的关闭 前言 今天总结TcpConnection类的读写事件。 一、TcpConnection的读 当Poller检测到套接字的Channel处于可读状态时&#xff0c;会调用Channel的回调函数&#xff0c;回调函数中根据不同激活…

treectrl类封装 2023/8/13 下午4:07:35

2023/8/13 下午4:07:35 treectrl类封装 2023/8/13 下午4:07:53 TreeCtrl 类是一个常用的图形用户界面控件,用于实现树形结构的展示和交互。以下是一个简单的 TreeCtrl 类的封装示例: python import wxclass MyTreeCtrl(wx.TreeCtrl):def __init__(self, parent):super()…

java限流

限流可以使用redis的过期时间自动过期限流的key&#xff0c;&#xff0c; 也可以使用一个定时器&#xff0c;在指定时间后清除这个key&#xff0c;&#xff0c;比如Timer Timer的使用 Timer timer new Timer() timer.schedule(timerTast,delay,period) public static void …

mysql面试题13:MySQL中什么是异步复制?底层实现?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:讲一讲mysql中什么是异步复制?底层实现? MySQL中的异步复制(Asynchronous Replication)是一种复制模式,主服务器将数据写入二进制日志后,无…

mysql面试题14:讲一讲MySQL中什么是全同步复制?底层实现?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:讲一讲mysql中什么是全同步复制?底层实现? MySQL中的全同步复制(Synchronous Replication)是一种复制模式,主服务器在写操作完成后,必须等待…