1 场景启动器 starter 简介

什么是 SpringMVC

在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,这样的弊端有:

  • JSP 和 Java Bean 之间严重耦合,Java 代码和 HTML 代码也耦合在了一起
  • 要求开发者不仅要掌握 Java ,还要有高超的前端水平
  • 前端和后端相互依赖,前端需要等待后端完成,后端也依赖前端完成,才能进行有效的测试代码难以复用

为了解决这些弊端,MVC 模式便应运诞生了。

M 代表 模型(Model)

模型是什么呢? 模型就是数据,就是 dao,bean

V 代表 视图(View)

视图是什么呢? 就是网页, JSP,用来展示模型中的数据

C 代表 控制器(controller)

控制器是什么? 控制器的作用就是把不同的数据(Model),显示在不同的视图(View)上,

Spring MVC 就是 MVC 模式的一种。Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet。

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和HTTP 服务器上的数据库或应用程序之间的中间层

Spring MVC 角色划分清晰,分工明细。由于 Spring MVC 本身就是 Spring 框架的一部分,可以说和 Spring 框架是无缝集成。性能方面具有先天的优越性,是当今业界最主流的 Web 开发框架,最热门的开发技能。

什么是 SpringBoot 场景启动器 starter

在了解完Spring MVC 的相关知识后,我们切入正题。SpringBoot 之所以引入场景启动 starter,必定有其原因。使用过Spring 的朋友都知道,大量的特性配置,常常让开发人员头疼万分。归纳起来有以下两点:

依赖导入问题

每个项目都需要来单独维护自己所依赖的jar包,在项目中使用到什么功能就需要引入什么样的依赖。手动导入依赖容易出错,且无法统一集中管理

配置繁琐

在引入依赖之后需要做繁杂的配置,并且这些配置是每个项目来说都是必要的,例如web.xml配置(Listener配置、Filter配置、Servlet配置)、log4j配置、数据库连接池配置等等。这些配置重复且繁杂,在不同的项目中需要进行多次重复开发,这在很大程度上降低了我们的开发效率。

SpringBoot 的启动器就是解决上述两个问题的。

2 SpringBoot 场景启动器的原理

在导入的starter之后,SpringBoot主要帮我们完成了两件事情:

  • 相关组件的自动导入
  • 相关组件的自动配置

自动配置原理

自动配置类的获取与注入

我们从主程序入口来探索一下整个过程的原理:

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

@SpringBootApplication 相当于

可以看到,自动配置的关键是@EnableAutoConfiguration 注解。

@EnableAutoConfiguration 注解

激活自动配置注解包含了两个部分:

  • @AutoConfigurationPackage
  • @Import(AutoConfigurationImportSelector.class)

首先,讲一下 @AutoConfigurationPackage。看一下该注解的定义:

@AutoConfigurationPackage 包含了 @Import(AutoConfigurationPackages.Registrar.class)。这是一个 Spring底层注解。向容器中注入一个Registrar,该Registrar会将@SpringBootApplication主配置类所在包下的所有类都扫描进Spring容器中。

再看一下@EnableAutoConfiguration 的 @Import(AutoConfigurationImportSelector.class) 。这也是一个Spring底层注解。向容器中注入一个Selector,该Selector可以将要注入的一系列bean的全限定类名返回,并按照名称将这些bean全部注入到容器中。

Spring Factories 文件

Spring Factories 是 SpringBoot 的扩展机制之一,是基于 java SPI 。所谓SPI机制就是,为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。

在 Spring 中也有一种类似与 Java SPI 的加载机制。它在 resources/META-INF/spring.factories 文件中配置接口的实现类名称,然后在程序中读取这些配置文件并实例化。

我们可以在spring-boot-autoconfigure包里,看一下spring.factories 文件。

在这里,我们可以看到SpringBoot官方为我们提供的所有自动配置类的候选列表。

3 总结

  • SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的所有自动配置类的全限定类名。
  • 将这些自动配置类导入容器,自动配置类就生效,帮我们进行自动配置工作。
  • 整个J2EE的整体解决方案和自动配置都在spring-boot-autoconfigure的jar包中。
  • 它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件,并配置好这些组件。
  • 有了自动配置类,免去了我们手动编写配置注入功能组件等的工作。

到此这篇关于SprintBoot深入浅出讲解场景启动器Starter的文章就介绍到这了,更多相关SprintBoo场景启动器内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

SprintBoot深入浅出讲解场景启动器Starter的更多相关文章

  1. SpringBoot详细分析自动装配原理并实现starter

    相对于传统意义上的Spring项目,SpringBoot具有开箱即用,简化配置,内置Tomcat等等等等一系列的特点。在这些特点中,最重要的两条就是约定优于配置和自动装配

  2. SpringBoot自定义starter启动器的实现思路

    这篇文章主要介绍了SpringBoot如何自定义starter启动器,通过starter的自定义过程,能够加深大家对SpringBoot自动配置原理的理解,需要的朋友可以参考下

  3. SpringBoot Pom文件依赖及Starter启动器详细介绍

    这篇文章主要介绍了SpringBoot Pom文件的依赖与starter启动器的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  4. Spring Boot 中starter的原理详析

    这篇文章主要介绍了Spring Boot 中starter原理详析,文章围绕主题展开springboot的插件机制和starter原理相关资料,需要的小伙伴可以参考一下

  5. SpringBoot自定义Starter实现流程详解

    SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰

  6. springboot自定义starter方法及注解实例

    这篇文章主要为大家介绍了springboot自定义starter方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  7. SprintBoot深入浅出讲解场景启动器Starter

    本篇文章将和大家分享一下 Spring Boot 框架中的 Starters 场景启动器的内容,关于 Starters 具体是用来做什么的,以及在开发 Spring Boot项目前,要如何自定义一个 Starters 场景启动器

  8. Spring Boot自定义Starter组件开发实现配置过程

    SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进 starter,应用者只需要在maven中引入starter依赖,这篇文章主要介绍了Spring Boot自定义Starter组件开发实现,需要的朋友可以参考下

  9. SpringBoot SPI 机制和实现自定义 starter

    这篇文章主要介绍了SpringBoot SPI机制和实现自定义 starter,全称是Service Provider Interface。简单翻译的话,就是服务提供者接口,是一种寻找服务实现的机制

  10. SpringCloud-Spring Boot Starter使用测试及问题小结

    Spring Boot Starter 是在 SpringBoot 组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种 Spring Boot Starter 包可以快速搭建出一个项目的脚手架,这篇文章主要介绍了SpringCloud-Spring Boot Starter使用测试,需要的朋友可以参考下

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部