互联网应用主流框架整合之Spring Boot基本概念

Spring Boot是用来简化Spring应用程序的搭建、开发、测试和部署过程的,该框架使用了特定的方式进行配置,从而使开发人员不再需要定义样板化的配置,SpringBoot致力于快速应用开发(Rapid Application Development)领域的发展,它通过约定配置的方式,使得开发者能够更好更快的开发、测试和部署Spring应用程序

Spring Boot的特点

  • 能够创建独立的应用程序
  • 内嵌Tomcat、Jetty或Undertow不需要部署WAR文件
  • 提供自定义的启动器,通过它依赖一些常用的包,简化配置
  • 尽可能自动配置Spring应用程序和第三方库
  • 提供生产就绪功能,例如度量、运行状况检查以及外部化配置等等
  • 完全没有代码生成也无需XML配置
  1. 从开发角度看,在SpringBoot之前的Spring应用程序中,我们不需要大量的配置Bean,无论是通过XML还是注解都是如此,Spring框架在如此大量的配置情况下,就显得很不友好,而Spring Boot改进了这个问题,也是当今使用Spring开发应用程序的主要方式
  2. 从部署角度看,Spring Boot可以内嵌服务器,从而可以更快地测试和部署
  3. 从测试角度看,Spring Boot的良好封装,从而可以更加便利和快速的测试
  4. 从运维角度看,Spring Boot提供了度量,从而可以随时监控应用的运行情况

随着微服务的发展,Spring Boot选择流行的微服务组件进行封装,从而形成了Spring Cloud的各种组件,通过这些组件能够快速简单有效的开发微服务,构建大型系统

搭建Spring Boot开发环境

Eclipse

如果使用Eclipse开发Spring Boot项目,首先启动IDE
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装过程中会出现几次弹窗,全部勾选,然后点击右下角的信任按钮,继续安装即可,安装完成后,会弹窗重启,重启之后这个插件就能正常使用了,然后新建Spring项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Thymeleaf是一种视图模板技术,也是Spring Boot官方推荐使用的,目前也是主流,而Spring Web支持Spring MVC,不但会依赖Spring基础包、SpringMVC和其他常用的包,还会在依赖上内嵌Tomcat,所以只要直接运行Java程序就能启动Web了
在这里插入图片描述
点击Finish便创建完了
在这里插入图片描述

JetBrains IDEA

在这里插入图片描述
在这里插入图片描述
点击Create按钮完成Spring Boot项目的创建

运行Spring Boot

在这里插入图片描述
项目创建完成后如上图所示,其中SpringbootmybatisdemoApplication.java是项目入口文件,为了测试启动Spring Boot稍微修改一下这个问题件,让他带一些信息代码如下

package com.sbm.springbootmybatis;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;

@SpringBootApplication
@RestController
public class SpringbootmybatisdemoApplication {

    @GetMapping("/test")
    public Map<String, String> test(){
        Map<String, String> map = new HashMap<>();
        map.put("hello", "world");
        map.put("message","Test Start Spring Boot");
        return map;
    }

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

然后启动程序,便能看到如下图所示场景
在这里插入图片描述
然后访问地址localhost:8080/test,如下图所示
在这里插入图片描述

从这个过程可以看到,Spring Boot要比传统的Spring开发快速便捷的多

Spring Boot运转逻辑

项目创建完,看一下自动创建的pom文件,里边已经添加了一些必要的依赖,但并不多,比之前传统的Spring项目要少很多,因为每一个Spring Boot的启动器(starter)都会引入其必须和常用的包,因此就无需再由开发者一一引入,里边还有个spring-boot-starter-tomcat的依赖,这就是内嵌的Tomcat服务器,也就无需再部署Tomcat来运行Spring Boot项目了

而实际上tomcat的这个依赖即便删掉,项目还是能够成功启动的,因为spring-boot-starter-web也会依赖它,就会被加载进来, 这是SpringBoot的机制

在项目创建完后,还自动生成了一个ServletInitializer.java文件,其源码如下

/**
 * 自定义Spring BootServletInitializer,用于在传统的Servlet容器中部署Spring Boot应用程序。
 * 通过重写configure方法,指定应用程序的入口点。
 */
package com.sbm;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

    /**
     * 配置Spring Boot应用程序的构建过程。
     * 此方法允许我们指定应用程序的源,从而在传统的Servlet容器中启动Spring Boot应用程序。
     *
     * @param application SpringApplicationBuilder实例,用于配置和构建Spring Boot应用程序。
     * @return SpringApplicationBuilder实例,经过配置后准备构建应用程序。
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringBmApplication.class);
    }

}

从名字可以看出来它是用于初始化Servlet运行环境的,类继承了SpringBootServletInitializer
在这里插入图片描述
从继承图来看,SpringBootServletInitializer实现了WebApplicationInitializer接口,在之前的练习中知道只要实现了WebApplicationInitializer接口,这个类就会被Spring MVC提供的SpringServletContainerInitializer加载,用于生成SpringIoC容器,而对于SpringServletContainerInitializer而言,它实现了Servlet3.0规范的ServletContainerInitializer接口,这样在内嵌的Tomcat容器中就会被发现并且运行,进而可以运行SpringBootServletInitializer,通过这样的关系内嵌的Tomcat就可以将Spring Boot的SpringIoC容器创建出来,从而将项目运行起来

  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值