SpringBoot--springboot简述及快速入门

spring Boot是spring提供的一个子项目,用于快速构建spring应用程序

传统方式:

image-20250511214728212

在众多子项目中,spring framework项目为核心子项目,提供了核心的功能,其他的子项目都需要依赖于spring framework,在我们实际开发中,我们可以根据不同的业务需求来选择不同的子项目,通过spring framework子项目把他们整合起来,从而构建一个spring应用程序。

随着我们的业务需求越来越复杂,功能越来越强大,构建spring程序就会越来越麻烦,因此spring官方给我们提供了spring boot专门应用于spring项目的构建,

image-20250511215050703

传统方式构建spring应用程序问题

  • 导入依赖繁琐

例如,我们在编写spring程序时,需要导入相关依赖,且是手动导入,而且这些依赖的jar包可能会造成冲突,jar包冲突的问题也需要去手动解决。非常麻烦。

  • 项目配置繁琐

还需要些很多的配置文件,例如web.xml,springMVC.xml,applicationContext.xml等等

applicationContext.xml是spring项目中的核心配置文件,需要在其中声明配置大量的Bean对象,比如数据库连接池(DataSource),SQLSessionFactorytransactionManagermapperScannerConfigue(扫描映射文件配置)等等不止,这还只是整合mybatis需要的声明配置,随着项目功能越来越强大,需要配置的bean对象也越来越多,越来越繁琐。

springBoot特性

  • 起步依赖(解决导入依赖繁琐的问题)

本质上就是一个Maven坐标,整合了完成一个功能需要的所有坐标。

例如,我们要开发一个web应用,需要引入大量依赖,例如spring-core,spring-web,spring-context,spring-aop等等,在传统方式构建时,需要手动导入,非常繁琐。

而springboot提供了一个起步依赖,在spring-boot-starter-web这个坐标,它将完成web开发需要的所有的坐标全部整合起来放在spring-boot-starter-web这个坐标里,接下来我们在实际开发中,在需要使用web开发时就不需要导入以前如此多的依赖了,只需要引入springboot提供的起步依赖的坐标即可。这里主要借助了Maven传递依赖的特性。

  • 自动配置(解决配置繁琐的问题)

遵循约定大于配置的原则,在boot程序启动后,一些bean对象会自动注入到IOC容器中,不需要手动声明,简化开发。

在传统项目创建中,spring整合MyBatis除了要导入大量依赖,还要在声明配置Bean对象(SQLSessionFactoryBean、MapperScannerCofigurer)。

而在springboot项目中,只需要引入MyBatis的起步依赖,在其内部已经自动声明需要的Bean对象,不需要在配置文件中手动的声明了。

起步依赖+自动配置 = 快速构建spring应用程序

  • 其它特性

    • 内嵌的Tomcat、Jetty(无需部署WAR文件)

    以前开发的web应用程序需要打成war包,再去部署到我们安转的Tomcat,Jetty这样的服务器软件上才能被浏览器访问。而springboot提供了内嵌的Tomcat,即使用springboot构建的应用程序,启动时内部的Tomcat会跟着启动,并且将当前项目里的资源自动部署好。

    • 外部化配置

    传统项目中的配置文件都在工程里,当前工程开发完毕后,打成jar包部署,但是如果一些配置发生了变化,需要在当前工程的配置文件里修改,修改完毕后重新打包并部署。比较繁琐

    springboot提供了外部化的配置,将所有的配置文件都放在了外部的MATA-INF/spring.factories中,如果项目部署完毕之后,想要修改配置,只需要去修改项目外边的配置文件即可,修改完毕后不需要重新编译打包部署,可以直接重启即可。

    • 不需要XML配置(使用properties/yml配置文件)

    传统项目中的XML配置文件写起来十分繁琐复杂,

    在springboot项目中采用properties配置文件(键值对形式)或者yaml/yml配置文件()来编写配置文件。十分简便。

我们可以尝试创建一个springboot项目

springBoot入门

需求:使用springboot开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串“hello world”

实现过程:

  • 创建Maven工程

  • 导入spring-boot-starter-web起步依赖

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
  • 编写Controller

 package com.lyc.firstdemo.controller;​import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;​@RestControllerpublic class IndexController {@RequestMapping("/hello")public String index(){return "hello world";}}
  • 提供启动类

image-20250512201529622

测试:

image-20250512202259184

测试成功,我们发现直接创建springboot项目的话,大多数需要的操作系统中已经自己完成了,,我们只需要创建Controller来控制网页,以及导入web的起步依赖。其他的操作已经在底层自动完成了。由此看来,springboot项目确实十分便捷。

注意事项:在springboot项目中打包方式不需要使用war包,因为springboot项目中内嵌了Tomcat,打成jar包就行。

我们已经创建了一个springboot项目并成功测试,并发现springboot项目与普通的Maven项目好像区别不是很多,让我们来尝试利用Maven项目来达到springboot项目中的效果。

手动创建springboot项目

  • 创建Maven工程

  • 引入父依赖以及spring-boot-starter-web起步依赖

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.5</version></parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
  • 提供启动类

 package com.lyc;​import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;​@SpringBootApplication //注解表示为springboot项目的启动类public class SpringBootCreateManualApplication {public static void main(String[] args) {SpringApplication.run(SpringBootCreateManualApplication.class, args);//调用run方法启动项目}​}
  • 提供controller类

 package com.lyc.controller;​import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;​@RestControllerpublic class IndexController {@RequestMapping("/hello")public String index(){return "hello world----------------niuhbi-----------";}}
  • 在浏览器中测试:

image-20250512203822477

测试成功。

希望让大家对springboot项目有个大概的了解。谢谢大家!

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

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

相关文章

INT202 Complexity of Algroithms 算法的复杂度 Pt.7 NP-Completeness NP完全性

文章目录 1.P与NP问题1.1 计算上难以解决的问题&#xff08;Hard Computational Problems&#xff09;1.2 决策问题和优化问题&#xff08;Decision/Optimization problems&#xff09;1.3 计算问题的正式定义1.4 复杂性类1.4.1 复杂性类 P P P1.4.2 证明&#xff08;Certifica…

websocketpp 安装及使用

介绍 WebSocket 是从 HTML5 开始支持的一种网页端和服务端保持长连接的消息推送机制。 传统的 web 程序都是属于 "一问一答" 的形式&#xff0c;即客户端给服务器发送了一个 HTTP 请求&#xff0c;服务器给客户端返回一个 HTTP 响应。这种情况下服务器是属于被动…

Android NDK 高版本交叉编译:为何无需配置 FLAGS 和 INCLUDES

引言&#xff1a;NDK 交叉编译的演进 Android NDK&#xff08;Native Development Kit&#xff09;是开发高性能C/C代码的核心工具链&#xff0c;而交叉编译&#xff08;在x86主机上生成ARM架构代码&#xff09;一直是NDK的核心功能。过去&#xff0c;开发者需要手动配置大量编…

AI+可视化:数据呈现的未来形态

当AI生成的图表开始自动“美化”数据&#xff0c;当动态可视化报告能像人类一样“讲故事”&#xff0c;当你的眼球运动直接决定数据呈现方式——数据可视化的未来形态&#xff0c;正在撕裂传统认知。某车企用AI生成的3D可视化方案&#xff0c;让设计师集体失业&#xff1b;某医…

基于Flink的用户画像 OLAP 实时数仓统计分析

1.基于Flink的用户画像 OLAP 实时数仓统计分析 数据源是来自业务系统的T日数据&#xff0c;利用kakfa进行同步 拼接多个事实表形成大宽表&#xff0c;优化多流Join方式&#xff0c;抽取主键和外键形成主外键前置层&#xff0c;抽取外键和其余内容形成融合层&#xff0c;将4次事…

Java游戏服务器开发流水账(7)网络通信简介

在 Java 游戏服务器开发中&#xff0c;网络通讯是核心组成部分&#xff0c;它主要负责客户端与服务器之间的数据交换。 一、网络通讯基础 1. 网络模型 C/S 架构&#xff1a;游戏服务器采用客户端 / 服务器模式&#xff0c;客户端向服务器发送请求&#xff0c;服务器处理请求…

使用ADB命令操作Android的apk/aab包

keystore文件转换jks文件 操作步骤&#xff1a; 步骤1&#xff0c;生成P12文件&#xff1a; keytool -importkeystore -srckeystore [文件名].keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore [文件名].p12 步骤2&#xff0c;生成jks文件&#xff1a; keytool…

图文展示HDFS、YARN、MapReduce三者关系

MapReduce架构概述 MapReduce将计算过程分为两个阶段&#xff1a;Map和Reduce &#xff08;1&#xff09;Map阶段并行处理输入数据 &#xff08;2&#xff09;Reduce阶段对Map结果进行汇总 HDFS、YARN、MapReduce三者关系

DL00219-基于深度学习的水稻病害检测系统含源码

&#x1f33e; 基于深度学习的水稻病害检测系统 — 智能农业的未来&#xff0c;守护农田的每一寸土地&#xff01; &#x1f69c; 完整系统获取见文末 水稻病害检测&#xff0c;一直是农业领域的一大难题。传统的人工检测不仅耗时耗力&#xff0c;还容易因经验不足导致漏检或误…

github 上的 CI/CD 的尝试

效果 步骤 新建仓库设置仓库的 page 新建一个 vite 的项目&#xff0c;改一下 vite.config.js 中的 base 工作流 在项目的根目录下新建一个 .github/workflows/ci.yml 文件&#xff0c;然后编辑一下内容 name: Build & Deploy Vue 3 Appon:push:branches: [main]permi…

鸿蒙5.0项目开发——鸿蒙天气项目的实现(介绍)

【高心星出品】 文章目录 项目简介&#xff1a;项目运行效果图&#xff1a;主要功能&#xff1a;使用的技能点&#xff1a;开发环境&#xff1a; 项目简介&#xff1a; 这是一个基于鸿蒙系统&#xff08;HarmonyOS&#xff09;开发的天气应用&#xff0c;采用 ArkTS 语言开发&…

SpringCloud之Eureka基础认识-服务注册中心

0、认识Eureka Eureka 是 Netflix 开源的服务发现组件&#xff0c;后来被集成到 Spring Cloud 生态中&#xff0c;成为 Spring Cloud Netflix 的核心模块之一。它主要用于解决分布式系统中​​服务注册与发现​​的问题。 Eureka Server 有必要的话&#xff0c;也可以做成集群…

【氮化镓】电子辐照下温度对GaN位移阈能的影响

2024年,华东师范大学的彭胜国等人基于从头算分子动力学(AIMD)方法,研究了低能电子束辐照下温度对氮化镓(GaN)位移阈能(TDE)的影响。实验结果表明,在初始动能40至80 eV的范围内,镓(Ga)和氮(N)原子作为初级击出原子(PKAs)引发的位移对温度呈现不同的敏感性:Ga 的…

Java 中的数据类型误导点!!!

在 Java 中&#xff0c;数据类型分为两大类&#xff1a;基本类型&#xff08;Primitive Types&#xff09; 和 引用类型&#xff08;Reference Types&#xff09;。它们的存储方式和行为完全不同。 1. 基本类型 Java 有 8 种基本数据类型&#xff0c;它们直接存储值&#xff…

二次封装 el-dialog 组件:打造更灵活的对话框解决方案

文章目录 引言为什么需要二次封装&#xff1f;封装思路代码实现1. 基础封装组件 (Dialog.vue)2. Vue中引入使用示例 封装后的优势进阶优化建议 总结 引言 在 Vue 项目中&#xff0c;Element UI 的 el-dialog 是一个非常实用的对话框组件。但在实际开发中&#xff0c;我们经常会…

框架篇八股(自用)

框架篇 Spring框架中的bean不是线程安全的 Scope&#xff08;&#xff09; singleton单例 prototype多例 一个类中有可修改的成员变量需要考虑线程安全 bean没有可变状态&#xff08;service类&#xff0c;DAO类&#xff09; 某种程度单例bean是线程安全的 AOP面向切面编程…

Go语言安装proto并且使用gRPC服务(2025最新WINDOWS系统)

1.protobuf简介 protobuf 即 Protocol Buffers&#xff0c;是一种轻便高效的结构化数据存储格式&#xff0c;与语言、平台无关&#xff0c;可扩展可序列化。protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格式。protobuf 是以二进制方式存储的&#xff0c;占用空…

rust-candle学习笔记11-实现一个简单的自注意力

参考&#xff1a;about-pytorch 定义ScaledDotProductAttention结构体&#xff1a; use candle_core::{Result, Device, Tensor}; use candle_nn::{Linear, Module, linear_no_bias, VarMap, VarBuilder, ops};struct ScaledDotProductAttention {wq: Linear,wk: Linear,wv: …

spark MySQL数据库配置

Spark 连接 MySQL 数据库的配置 要让 Spark 与 MySQL 数据库实现连接&#xff0c;需要进行以下配置步骤。下面为你提供详细的操作指南和示例代码&#xff1a; 1. 添加 MySQL JDBC 驱动依赖 你得把 MySQL 的 JDBC 驱动添加到 Spark 的类路径中。可以通过以下两种方式来完成&a…

web 自动化之 KDT 关键字驱动详解

一、什么是关键字驱动&#xff1f; 1、什么是关键字驱动&#xff1f;&#xff08;以关键字函数驱动测试&#xff09; 关键字驱动又叫动作字驱动&#xff0c;把项目业务封装成关键字函数&#xff0c;再基于关键字函数实现自动化测试 2、关键字驱动测试原理 关键字驱动测试是一…