SpringBoot起步依赖及切换web服务器

简介: SpringBoot起步依赖及切换web服务器

一、SpringBoot概述

SpringBoot是由Pivota团队提供的全新框架,其设计目的是用来简化Spring初始搭建以及开发过程。


原始Spring环境搭建和开发存在以下问题:

● 配置繁琐

● 依赖设置繁琐


SpringBoot程序优点恰巧针对Spring的缺点

● 自动配置,这个是用来解决Spring程序配置繁琐的问题

● 起步依赖,这个是用来解决Spring程序依赖设置繁琐的问题

● 辅助功能(内置服务器...),我们在启动SpringBoot程序时既没有使用本地的tomcat也没有使用tomcat插件,而是使用SpringBoot内置的服务器。


二、起步依赖

我们在使用Spring Initializr方式创建的Maven工程的pom.xml配置文件中自动生成很多包含starter的依赖,这些依赖就是起步依赖。

8ea643b97ff84d34b2b484a7feb30d2c.png

探索父工程

从上面的文件中可以看到指定了一个父工程,我们进入到父工程中又指定了一个父工程,如下图所示

7d3511b5f0ce48199f7f8b55dd03b867.png

在进入到该父工程中,在该工程中我们可以看到配置内容结构如下图所示

93c4567a5ed444de8f5f249c4285ccc8.png

上图中的properties标签中定义了各个技术软件依赖的版本,避免了我们在使用不同软件技术时考虑版本兼容的问题,在properties中我们找到servlet和mysql的版本如下

1f720500f7be46389e90719e105a2d1c.png

fdd1bb75308b4ba3a4b0be9a2e868cd4.png

dependencyManagement标签是进行依赖版本锁定,但是并没有导入对应的依赖,如果我们工程需要那个依赖,只需要引入依赖的groupid和artifactId不需要定义version。


而build标签中也对插件的版本进行了锁定,如下图

4f12cef6d6dd4c658e869d46eae8870a.png

看完父工程中pom.xml的配置后不难理解我们工程的依赖为什么都没有配置version。

探索依赖

在我们创建的工程中的pom.xml中配置了如下依赖

5bf56813b9594423864a102d725c7b3b.png

进入依赖,查看pom.xml的依赖会发现引用了如下依赖

8fd14659c9334dcc965df3d3bda4c78b.png

里面引用了spring-web和spring-webmvc的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用springmvc中注解的原因。


而依赖springboot-starter-tomcat,从名字基本能确定内部依赖了tomcat,所以我们的工程才能正常启动。


结论:以后需要使用技术,只需要引入该技术对应的起步依赖即可


小结:

starter

● SpringBoot中常见的项目名称,定义当前项目使用的所有项目坐标,已达到减少依赖配置的目的

parent

● 所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),已达到减少依赖冲突的目的

● spring-boot-starter-parent(2.5.0)与spring-boot-starter-parent(2.4.6)共计57处坐标版本不同

实际开发

● 使用任意坐标时,仅属性GAV中的G和A,V由SpringBoot提供

G:groupid

A:artifactId

V:version

● 如发送坐标错误,再指定version(要小心版本冲突)

三、程序启动

创建每一个SpringBoot程序时都包含一个类似于下面的类,我们将这个类称为引导类

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

注意:

SpringBoot在创建项目时,采用jar的打包方式

SpringBoot的引导类是项目的入口,运行main方法就可以启动项目


因为我们在pom.xml中配置了spring-boot-starter-web依赖,而该依赖通过前面的学习知道它依赖tomcat,所以运行main方法就可以使用tomcat启动工程。

四、切换web服务器

现在我们的启动工程使用的是tomcat服务器,那能不能不使用tomcat而使用jetty服务器,jetty服务器是maven私服使用的服务器,而要切换web服务器就需要将默认的tomcatf服务器给排除掉,使用exclusion标签

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

再引入jetty服务器,在pom.xml中引入jetty的起步依赖

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

运行引导类,在日志信息中就可以看到使用的是jetty服务器

7c8aeb4855444a13a50b71f072f89ce0.png

通过切换服务器,我们可以发现使用SpringBoot切换技术时只需要导入该技术的起步依赖即可。

目录
相关文章
|
2月前
|
监控 IDE Java
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
81 8
|
2月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
60 3
|
3月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
30 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
3月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
57 3
|
3月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
62 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
5月前
|
API C# 开发框架
WPF与Web服务集成大揭秘:手把手教你调用RESTful API,客户端与服务器端优劣对比全解析!
【8月更文挑战第31天】在现代软件开发中,WPF 和 Web 服务各具特色。WPF 以其出色的界面展示能力受到欢迎,而 Web 服务则凭借跨平台和易维护性在互联网应用中占有一席之地。本文探讨了 WPF 如何通过 HttpClient 类调用 RESTful API,并展示了基于 ASP.NET Core 的 Web 服务如何实现同样的功能。通过对比分析,揭示了两者各自的优缺点:WPF 客户端直接处理数据,减轻服务器负担,但需处理网络异常;Web 服务则能利用服务器端功能如缓存和权限验证,但可能增加服务器负载。希望本文能帮助开发者根据具体需求选择合适的技术方案。
234 0
|
5月前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
49 0
|
5天前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
|
4天前
|
存储 运维 安全
阿里云弹性裸金属服务器是什么?产品规格及适用场景介绍
阿里云服务器ECS包括众多产品,其中弹性裸金属服务器(ECS Bare Metal Server)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。分钟级的交付周期将提供给您实时的业务响应能力,助力您的核心业务飞速成长。本文为大家详细介绍弹性裸金属服务器的特点、优势以及与云服务器的对比等内容。
|
12天前
|
人工智能 JSON Linux
利用阿里云GPU加速服务器实现pdf转换为markdown格式
随着AI模型的发展,GPU需求日益增长,尤其是个人学习和研究。直接购置硬件成本高且更新快,建议选择阿里云等提供的GPU加速型服务器。
利用阿里云GPU加速服务器实现pdf转换为markdown格式

热门文章

最新文章