[SpringBoot]快速入门搭建springboot

        默认有spring基础,不会一行代码一行代码那么细致地讲。

SpringBoot的作用

        Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的。就像我们整个SSM框架时,就常常会碰到版本导致包名对不上、Bean非法参数类型的一系列问题(原出处链接)。因为一种架构中有很多很多的jar包,而jar包之间的整合(需要导入那些包,有哪些包之间的整合需要额外的jar包[像mybatis-spring]、每种包的版本选择)。

        SpringBoot提供了一堆依赖打包Starter,并已经按照使用习惯解决了依赖问题---习惯大于约定。Spring Boot默认使用tomcat作为服务器,使用logback提供日志记录。致力于简洁,让开发者写更少的配置,程序能够更快的运行和启动。

主要特点:

1.为基于Spring的开发提供更快的入门体验

2.开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求

3.提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等

4.SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式

创建项目及注意事项

        1.来到项目创建

        

         2.选择

我们左侧选择Springboot

        3.在这个页面选择你想要添加的框架,同时SpringBoot版本不建议选太高


         之后不同的框架各有个的整合需求,这里只讲SpringBoot本身的使用:

SpringBoot简介

父项目parent

        SpringBoot将所有的技术版本的常见使用方案都给开发者整理了出来,以后开发者使用时直接用它提供的版本方案,就不用担心冲突问题了,相当于SpringBoot做了无数个技术版本搭配的列表,这个技术搭配列表的名字叫做parent。简单讲,版本管理这一块springboot-parent会帮我们做好,而使用哪些框架还是我们自己定。

        父项目指定使用<parent>标签指定,如果你前面示例的方式,使用构建工具创建springboot项目,工具通常会给你加上。

        我们ctrl+鼠标左键点进spring-boot-starter-parent:

         可以看到它还继承了个spring-boot-dependencies。我们再同样地点进spring-boot-dependencies,可以看到这里定义了很多版本号。当我们选择了引入的框架之后,就会在这里获取对应的版本号。

starter

        SpringBoot关注到实际开发时,开发者对于依赖坐标的使用往往都有一些固定的组合方式,比如使用spring-webmvc就一定要使用spring-web。每次都要固定搭配着写,非常繁琐,而且格式固定。因此,springboot把所有的技术使用的固定搭配格式都给开发出来。用某个技术就不用每次写一堆依赖了,开发者使用的时候直接写上对应的搭配即可。对于这样的固定技术搭配,SpringBoot给它起了个名字叫做starter。

starter:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

原本要写的依赖:

<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>6.1.18</version><scope>compile</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.18</version><scope>compile</scope></dependency>

引导类

        讲完配置和创建,下面讲运行。目前springboot程序运行的入口就是SpringBoot工程创建时自带的那个类,也就是带有main方法的那个类,运行这个类就可以启动SpringBoot工程。

        SpringApplication会执行以下步骤:

1.推断应用的类型是普通的项目还是Web项目

2.查找并加载所有可用初始化器,设置到initializers属性中

3.找出所有的应用程序监听器,设置到listener属性中

4.推断并设置main方法的定义类,找到运行的主类

注解

        在我们的启动类上面有这个注解@SpringBootApplication,这个注解继承了@EnableAutoConfiguration注解和@ComponentScan:

        @SpringBootApplication是springboot2开始才有的注解,在springboot1使用的是原始的@EnableAutoConfiguration注解和@ComponentScan注解。

        无论使用@EnableAutoConfiguration注解和@ComponentScan还是使用@SpringBootApplication,其目的都是为了快速配置启动类。

        也就是@SpringBootApplication是一个复合注解。现在我们来看原始的注解,每个注解都做了些什么。

@SpringBootConfiguration

        我们看源码:

        
         可以看到@Configuration。在Spring项目中,我们的配置类就是使用该注解,用于生成IOC容器。

@EnableAutoConfiguration

        @EnableAutoConfiguration 注解启用自动配置,其可以帮助 SpringBoot 应用将所有符合条件的 @Configuration 配置都加载到当前 IoC 容器之中。

        简单描述,该注解的作用就是从 指定的配置文件,并将文件中的 EnableAutoConfiguration 对应的配置项,通过反射机制,实例化为对应标注了 @Configuration 的形式的IoC容器配置类,然后注入IoC容器。

@ComponentScan

        @ComponentScan 对应于XML配置形式中的 <context:component-scan>,用于将一些标注了特定注解的bean定义批量采集注册到Spring的IoC容器之中,这些特定的注解大致有:@Controller、@Component、@Service、@Repository。

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

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

相关文章

ROS-真机向虚拟机器人映射

问题描述 ROS里的虚拟机械臂可以实现和真实机械臂的位置同步&#xff0c;真实机械臂如何动&#xff0c;ROS里的虚拟机械臂就如何动 效果 步骤 确保库卡机械臂端安装有EthernetKRL辅助软件和KUKAVARPROXY 6.1.101&#xff08;它是一个 TCP/IP 服务器 &#xff0c;可通过网络实…

ubuntu--安装双系统

教程 BIOS设置 启动盘生成和ubuntu安装 boot option #1设置USB为第一启动项 rufus下载 官网&#xff1a; 链接 点击“链接”下面的按钮&#xff0c;即可下载。(注意查看自己的电脑是x64还是x84) 网盘下载&#xff1a; 链接

Python项目--基于计算机视觉的手势识别控制系统

1. 项目概述 1.1 项目背景 随着人机交互技术的快速发展&#xff0c;传统的键盘、鼠标等输入设备已经不能满足人们对自然、直观交互的需求。手势识别作为一种非接触式的人机交互方式&#xff0c;具有操作自然、交互直观的特点&#xff0c;在智能家居、游戏控制、虚拟现实等领域…

LabVIEW数据采集与传感系统

开发了一个基于LabVIEW的智能数据采集系统&#xff0c;该系统主要通过单片机与LabVIEW软件协同工作&#xff0c;实现对多通道低频传感器信号的有效采集、处理与显示。系统的设计旨在提高数据采集的准确性和效率&#xff0c;适用于各种需要高精度和低成本解决方案的工业场合。 项…

java Springboot使用扣子Coze实现实时音频对话智能客服

一、背景 因公司业务需求&#xff0c;需要使用智能客服实时接听顾客电话。 现在已经完成的操作是&#xff0c;智能体已接入系统进行对练&#xff0c;所以本文章不写对联相关的功能。只有coze对接&#xff5e; 扣子提供了试用Realtime WebSocket&#xff0c;点击右上角setting配…

栈和字符串,力扣.43.字符串相乘力扣1047.删除字符串中的所有相邻重复项力扣.844比较含退格的字符串力扣227.基本计算器II

目录 力扣.43.字符串相乘 力扣1047.删除字符串中的所有相邻重复项 力扣.844比较含退格的字符串 力扣227.基本计算器II 力扣.43.字符串相乘 我们剩下的落两个数字即可。 class Solution {public static String multiply(String num1, String num2) {int mnum1.length();int n…

Spring Boot单元测试实战指南:从零到高效测试

在Spring Boot开发中&#xff0c;单元测试是保障代码质量的核心环节。本文将基于实际开发场景&#xff0c;手把手教你如何快速实现分层测试、模拟依赖、编写高效断言&#xff0c;并分享最佳实践&#xff01; 一、5分钟环境搭建 添加依赖 在pom.xml中引入spring-boot-starter-te…

React状态提升深度解析:原理、实战与最佳实践

一、状态提升的本质认知 React状态提升&#xff08;State Lifting&#xff09;是组件间通信的核心模式&#xff0c;其本质是通过组件树层级关系重构实现状态共享。与传统父子传参不同&#xff0c;它通过将状态提升到最近的共同祖先组件&#xff0c;建立单向数据流高速公路。 …

https nginx 负载均衡配置

我的系统是OpenEuler。 安装nginx yum install -y nginx 启动&开机启动 systemctl start nginx systemctl enable nginx 自定义conf配置文件 cat <<EOF >> /etc/nginx/conf.d/load_balancer.conf upstream backend {ip_hash; # 防止验证码验证失败server…

各种插值方法的Python实现

插值方法的Python实现 1. 线性插值&#xff08;Linear Interpolation&#xff09; 原理&#xff1a;用直线连接相邻数据点&#xff0c;计算中间点的值。 实现&#xff1a; import numpy as np from scipy.interpolate import interp1dx np.array([0, 1, 2, 3, 4]) y np.arr…

重新定义户外防护!基于DeepSeek的智能展开伞棚系统技术深度解析

从“手动操作”到“感知决策”&#xff0c;AI重构城市空间弹性 全球极端天气事件频发&#xff0c;传统伞棚依赖人工展开/收纳&#xff0c;存在响应滞后&#xff08;暴雨突袭时展开需3-5分钟&#xff09;、抗风能力弱&#xff08;8级风损毁率超60%&#xff09;、空间利用率低等痛…

Redis 基础和高级用法入门

redis 是什么&#xff1f; Redis是一个远程内存数据库&#xff0c;它不仅性能强劲&#xff0c;而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构&#xff0c;各式各样的问题都可以很自然地映射到这些数据结构上&#xff1a…

常见数据库关键字示例 SQL 及执行顺序分析(带详细注释)

示例 SQL 及执行顺序分析&#xff08;带详细注释&#xff09; 示例 1&#xff1a;基础查询&#xff08;含多表关联、过滤、分组、排序&#xff09; SELECT -- 1. 选择字段&#xff08;包含聚合函数和别名&#xff09;e.department, COUNT(e.employee_id) AS total_employees, …

设计模式--建造者模式详解

建造者模式 建造者模式也属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式 定义&#xff1a;将一个复杂对象的构建和它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示&#xff08;假设有不同的建造者实现类&#xff0c;可以产生不同的产品&#xff09…

PCB 过孔铜厚的深入指南

***前言&#xff1a;在上一期的文章中介绍了PCB制造的工艺流程&#xff0c;但仍然想在过孔的铜厚和PCB的过孔厚径比两个方面再深入介绍。 PCB铜厚的定义 电路中铜的厚度以盎司(oz)**表示。那么&#xff0c;为什么用重量单位来表示厚度呢? 盎司(oz)的定义 将1盎司(28.35 克)的铜…

如何配置 Conda 使用镜像源加速

如何配置 Conda 使用镜像源加速 为了提高使用 Anaconda 或 Miniconda 时包管理的速度&#xff0c;特别是在国内网络环境下&#xff0c;可以通过配置镜像源来实现更快的下载。以下是详细的步骤说明&#xff1a; 1. 安装 Conda&#xff08;如果尚未安装&#xff09; 如果你还没…

【k8s】k8s是怎么实现自动扩缩的

Kubernetes 提供了多种自动扩缩容机制&#xff0c;主要包括 Pod 水平自动扩缩&#xff08;HPA&#xff09;、垂直 Pod 自动扩缩&#xff08;VPA&#xff09; 和 集群自动扩缩&#xff08;Cluster Autoscaler&#xff09;。以下是它们的实现原理和配置方法&#xff1a; 1. Pod …

Reflex 完全指南:用 Python 构建现代 Web 应用的终极体验

“写 Python&#xff0c;就能构建 Web 前端。”——这不再是梦想&#xff0c;而是由 Reflex 带来的现实。 过去&#xff0c;构建一个现代 Web 应用意味着你要学会前端&#xff08;React/JS/HTML/CSS&#xff09; 后端&#xff08;Flask/Django&#xff09; API 交互&#xff08…

Vue实战(08)解决 Vue 项目中路径别名 `@` 在 IDE 中报错无法识别的问题

一、引言 ​ 在 Vue 项目开发过程中&#xff0c;路径别名是一个非常实用的特性&#xff0c;它能够帮助开发者简化文件引用路径&#xff0c;提高代码的可读性和可维护性。其中&#xff0c; 作为一个常见的路径别名&#xff0c;通常被用来指向项目的 src 目录。然而&#xff0c;…

5.学习笔记-SpringMVC(P61-P70)

SpringMVC-SSM整合-接口测试 (1)业务层接口使用junit接口做测试 (2)表现层用postman做接口测试 (3)事务处理— 1&#xff09;在SpringConfig.java&#xff0c;开启注解&#xff0c;是事务驱动 2&#xff09;配置事务管理器&#xff08;因为事务管理器是要配置数据源对象&…