SpringBoot之入门使用

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
SpringBoot之入门使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、Spring缺点分析
  • 二、什么是SpringBoot
  • 三、SpringBoot的使用
    • 官网搭建SpringBoot
    • Idea搭建SpringBoot项目
    • Maven项目创建SpringBoot
  • SpringBoot项目结构
    • POM文件
  • SpringBoot原理分析
    • 起步依赖
    • 自动配置
    • 核心注解
      • @SpringBootApplication
      • @SpringBootConfiguration
      • @EnableAutoConfiguration
      • @AutoConfigurationPackage
      • @Import({AutoConfigurationImportSelector.class})
      • @ComponentScan
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

Spring Boot 是一个基于 Spring 框架的 Java Web 开发框架,旨在简化 Spring 应用程序的搭建和开发过程。它提供了一系列的特性和工具,使得开发者可以更加快速和高效地创建企业级应用程序。
在这篇博客中,我将介绍 Spring Boot 的入门使用,包括如何创建一个简单的 Spring Boot 项目、如何运行和调试应用程序,以及如何使用一些常用的 Spring Boot 特性。
如果你是一个 Java 开发者,并且想要学习如何使用 Spring Boot 来构建高效、可靠的 Web 应用程序,那么这篇博客将为你提供一个很好的起点。让我们开始吧!


提示:以下是本篇文章正文内容,下面案例可供参考

一、Spring缺点分析

尽管 Spring 的组件代码相对较轻量级,但其配置却相对较重。使用 Spring 进行项目开发需要在配置文件中编写大量的代码,这些配置都代表了开发过程中的额外工作量。此外,Spring 项目的依赖管理也是一个耗时且复杂的任务。在环境搭建阶段,需要仔细分析需要导入哪些库的坐标,同时还需要考虑导入与之有依赖关系的其他库的坐标。一旦选择了错误的依赖版本,可能会导致不兼容问题,严重影响项目的开发进度。例如,Spring 5.0 及以上版本只能与 Junit 4.12 及以上版本兼容。

二、什么是SpringBoot

Spring Boot 是一个用于创建独立生产级别的 Spring 应用程序的框架,它简化了 Spring 应用程序的开发过程,提供了一种更快速、更轻量级的方式来构建基于 Spring 框架的应用程序。
Spring Boot 通过提供一些默认配置和约定,减少了开发人员在配置上的工作量,让开发者可以更专注于业务逻辑的实现。以下是 Spring Boot 的一些主要特点:

  • 自动配置(Auto-Configuration):Spring Boot 可以根据项目的依赖和内容自动配置应用程序,开发者无需手动配置许多常见的设置,减少了样板代码。
  • 独立性(Standalone):Spring Boot 应用程序可以作为独立的可执行 JAR 文件运行,内嵌了 Web 服务器(如 Tomcat、jetty),无需部署到外部服务器。
  • 约定大于配置(Convention over Conf):Spring Boot 遵循一些默认的约定,例如项目结构、文件命名等,减少了开发者需要做的决策。
  • 内嵌式 Web 容器(Embedded Web Container):Spring Boot 内置了常用的 Web 容器,可以快速地开发和部署 Web 应用程序。
  • 起步依赖(Starter Dependencies):Spring Boot 提供了一系列预配置的依赖库,可以轻松地集成各种功能,如数据库访问、安全认证、消息传递等。
  • 自动化配置(Automated Configuration):SpringBoot项目自动提供最优配置,同时可以修改默认值满足特定的要求。
  • 可嵌套性(Embeddable):Spring Boot 应用程序可以嵌入到其他 Spring 应用程序中以提供特定的功能。

三、SpringBoot的使用

官网搭建SpringBoot

  1. 访问start.spring.io
  2. 生成SpringBoot项目
    在这里插入图片描述
    SpringBoot版本说明:
  • CURRENT:最新版本(但不一定稳定)。
  • GA:General Availability,正式发布的版本,官方推荐使用该版本,国外很多项目都是使用GA来表示正式发布版本。
  • SNAPSHOT:快照版,可以稳定使用,且该版本会一直进行小量的优化和改进。
  • PRE:预览版,主要是用来内部开发人员和测试人员测试使用,因此不建议使用。
  • Release:正式版,也可能没有任何后缀也表示正式版

3.解压生成的SpringBoot项目
4.在idea中打开项目即可

Idea搭建SpringBoot项目

1.在idea中新建项目
在这里插入图片描述
2.项目类型为Spring Initializr,选择JDK版本,Java版本选择8
在这里插入图片描述
3.选择自己想要的SpringBoot版本,点击自己需要的起步依赖,最后creat
在这里插入图片描述

Maven项目创建SpringBoot

1.使用Maven创建普通JAVA项目
在这里插入图片描述
2.在pom中添加项目的父工程、起步依赖、插件

<!--  父工程  -->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0-M1</version>
</parent>
<!-- 起步依赖  -->
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
<!--  插件  -->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

3.编写启动类

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

4.编写配置文件application.properties

#日志格式
logging.pattern.console=%d{MM/dd HH:mm:ss.SSS} %clr(%-5level) ---  [%-15thread] %cyan(%-50logger{50}):%msg%n
#端口号
server.port=8888

SpringBoot项目结构

POM文件

  • 所有的SpringBoot 项目都必须继承 spring-boot-starter-parent,也就是说,它们都是 spring-boot-starter-parent 的子项目。spring-boot-starter-parent 定义了常用的配置、依赖和插件等信息,供 SpringBoot 项目继承和使用。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.0-M1</version><relativePath/> <!-- lookup parent from repository -->
</parent>
  • SpringBoot项目中可以定义起步依赖,起步依赖不是以jar包为单位,而是以功能为单位
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>
  • spring-boot-maven-plugin插件是将项目打包成jar包的插件。该插件打包后的SpringBoot项目无需依赖web容器,可以直接使用JDK运行
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

SpringBoot原理分析

起步依赖

起步依赖可以理解为一个项目启动时所需要的基本依赖关系。它是 Spring Boot 框架的一个重要特性,用于简化项目的构建和配置过程。
举个例子,假设你要开发一个简单的 Web 应用程序,使用 Spring Boot 框架。你可以选择一个起步依赖,比如"spring-boot-starter-web",这个依赖会自动包含了开发 Web 应用程序所需的一些常见库和框架,如 Spring Web、Tomcat 服务器等。
起步依赖的好处是,你不需要手动添加和配置每个库和框架的依赖,而是通过选择一个起步依赖,它会自动为你处理这些依赖关系。这样可以减少冗余的配置,提高开发效率。
另外,起步依赖还提供了一些默认的配置,使得你的项目在相同的环境下能够以相同的方式运行。这意味着,当你使用某个起步依赖时,它会为你设置一些常见的配置选项,比如端口号、日志级别等,这样你可以更快速地启动和运行你的项目。

自动配置

Spring Boot 的自动配置原理是基于约定优于配置的理念实现的。它通过猜测应用程序可能需要的配置,并在启动时自动进行配置。

自动配置的核心是spring-boot-autoconfigure模块,该模块提供了很多自动配置的类,这些类会根据应用程序的上下文信息(如类路径、环境变量等)来决定是否进行配置。

当应用程序启动时,Spring Boot 会扫描项目中的类路径,查找@EnableAutoConfiguration或@ComponentScan注解,并根据这些注解来加载自动配置类。自动配置类会通过反射获取应用程序中的类和接口信息,并根据一些约定(如是否存在某个接口的实现类、是否存在某个注解等)来决定是否进行配置。
如果需要自定义自动配置,可以通过实现AutoConfigurationImportFilter接口或使用@AutoConfigureOrder注解来控制自动配置类的加载顺序,或者通过实现SmartInitializingSingleton接口来在应用程序启动后进行额外的配置操作。

核心注解

@SpringBootApplication

标注是SpringBoot的启动类。此注解等同于@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan。当在一个类上添加@SpringBootApplication注解时,Spring Boot 会根据注解中的信息自动配置应用程序。它会扫描当前类所在的包及其子包中的类,并根据需要进行自动配置,例如添加必要的 Bean、配置数据源、启动 Web 服务器等。

@SpringBootConfiguration

@SpringBootConfiguration是@Configuration的派生注解,跟@Configuration功能一致,标注这个类是一个配置类,只不过@SpringBootConfiguration是Springboot的注解,而@Configuration是Spring的注解

@EnableAutoConfiguration

SpringBoot自动配置注解。等同于@AutoConfigurationPackage+@Import(AutoConfigurationImportSelector.class)
简单来说,当使用@EnableAutoConfiguration注解时,Spring Boot 会根据类路径设置、其他 Bean 和各种属性设置等信息,自动配置项目所需的 Bean。

@AutoConfigurationPackage

自动扫描包的注解,它会自动扫描主类所在包下所有加了注解的类(@Controller,@Service等),以及配置类(@Configuration)。

@Import({AutoConfigurationImportSelector.class})

该注解会导入AutoConfifigurationImportSelector类对象,该对象会从META-INF/spring.factories文件中读取配置类的名称列表。

@ComponentScan

该注解会扫描项目,自动装配一些项目启动需要的Bean。


总结

提示:这里对文章进行总结:

总之,Spring Boot 提供了一种简洁、高效的方式来构建和部署 Spring 应用程序,使开发人员能够更加专注于业务逻辑的开发。

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

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

相关文章

[区间动态规划] 棋盘分割

题目描述 ​ 将一个&#xff18;*&#xff18;的棋盘进行如下分割&#xff1a;将原棋盘割下一块矩形棋盘并使剩下部分也是矩形&#xff0c;再将剩下的部分继续如此分割&#xff0c;这样割了(n−1)次后&#xff0c;连同最后剩下的矩形棋盘共有 n 块矩形棋盘。(每次切割都只能沿…

Leetcode每日一题:1599.经营摩天轮的最大利润

前言&#xff1a;本题是一道逻辑细节题&#xff0c;考察阅读理解并转化为代码的能力&#xff0c;很多细节 题目描述&#xff1a; 你正在经营一座摩天轮&#xff0c;该摩天轮共有 4 个座舱 &#xff0c;每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱&#xff0c;但…

声明式导航传参详情

1 动态路由传参 路由规则path ->/article/:aid 导航链接 <router-link to"/article/1">查看第一篇文章</router-link> 组件获取参数: this.$route.params.aid 如果想要所有的值&#xff0c;就用this. $route. params 注意&#xff1a;这两个必须匹配…

STM32的在线升级(IAP)实现方法:BOOT+APP原理详解

0 工具准备 Keil uVision5 Cortex M3权威指南&#xff08;中文&#xff09; STM32参考手册 1 在线升级&#xff08;IAP&#xff09;设计思路 为了实现STM32的在线升级&#xff08;IAP&#xff09;功能&#xff0c;通常会将STM32的FLASH划分为BOOT和APP两个部分&#xff0c;BOO…

[每周一更]-(第46期):Linux下配置Java所需环境及Java架构选型

Linux下配置Java所需环境及Java架构选型 一、配置基础环境 1.配置tomcat 环境变量 wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.8/src/apache-tomcat-10.1.8-src.tar.gz tar -zxvf apache-tomcat-10.1.8-src.tar.gz 在/etc/profile 末尾追加export CATALINA_HOME…

排序算法-选择插入排序

文章目录 排序算法-选择插入排序 排序算法-选择插入排序 /// <summary>/// 选择插入排序/// Krystal 2023-11-10 09:02:06 每一次找一个最小的放到正确的位置上/// 直接选择排序通过每一轮的比较&#xff0c;找到最大值和最小值&#xff0c;将最大值的节点和右边交换&…

【快速全面掌握 WAMPServer】10.HTTP2.0时代,让 WampServer 开启 SSL 吧!

网管小贾 / sysadm.cc 如今的互联网就是个看脸的时代&#xff0c;颜值似乎成了一切&#xff01; 不信&#xff1f;看看那些直播带货的就知道了&#xff0c;颜值与出货量绝对成正比&#xff01; 而相对于 HTTP 来说&#xff0c;HTTPS 绝对算得上是高颜值的帅哥&#xff0c;即安…

【STM32】SPI通信

1 SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外设接口&#xff09;是由Motorola公司开发的一种通用数据总线 四根通信线&#xff1a;SCK&#xff08;Serial Clock&#xff0c;串行时钟&#xff09;、MOSI&#xff08;Master Output Slave Input&am…

使用anaconda创建爬虫spyder工程

1.由于每个工程使用的环境都可能不一样&#xff0c;因此一个好的习惯就是不同的工程都创建属于自己的环境&#xff0c;在anaconda中默认的环境是base&#xff0c;我们现在来创建一个名为spyder的环境&#xff0c;专门用于爬虫工程&#xff1a; //括号中名字&#xff0c;代表当…

初识大数据,一文掌握大数据必备知识文集(7)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

大数据 - Hadoop系列《三》- HDFS(分布式文件系统)概述

&#x1f436;5.1 hdfs的概念 HDFS分布式文件系统,全称为:Hadoop Distributed File System。 它是一个文件系统&#xff0c;用于存储文件&#xff0c;通过目录树来定位文件&#xff1b;其次&#xff0c;它是分布式的&#xff0c;由很多服务器联合起来实现其功能&#xff0c;集…

Java集合/泛型篇----第五篇

系列文章目录 文章目录 系列文章目录前言一、说说LinkHashSet( HashSet+LinkedHashMap)二、HashMap(数组+链表+红黑树)三、说说ConcurrentHashMap前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通…