Fork me on GitHub

Spring 与 SpringBoot 的区别

概述

Spring 与 SpringBoot 有什么区别???梳理一下 Spring 和 SpringBoot 到底有什么区别,从 Spring 和 SpringBoot 两方面入手。

Spring

什么是 Spring?在我看来,Spring 作为一款 Java 开发的必选框架,也是一款“胶水”框架,它解决了 Java 企业级开发的复杂度问题,所谓的复杂度问题,就是耦合度问题。
传统开发需要开发人员手动管理对象关系和生命周期,Spring 框架提出了两大核心:IOC 与 AOP。有效的管理了开发中对象的生命周期问题,也提供了与很多框架整合的工具。
但是,Spring 最大的弊端,需要大量的 XML 配置,不管项目整体大小,都需要大量的配置文件搭建架构。

Spring框架为开发Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如:
Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test
这些模块大家应该都用过吧,这些模块缩短应用程序的开发时间,提高了应用开发的效率

SpringBoot

SpringBoot 可以看作是对 Spring 框架的扩展,可以快速搭建独立的 Spring 应用程序。
它内嵌了 Tomcat,Jetty 等容器,项目是一个 jar 包,通过 Application 入口类快速运行整个项目,提供了 Pom 简化 Maven 的配置,避免了项目包与包的冲突,对第三方技术做了很好的封装。
我认为最重要的一点是,减少了大量的 XML 配置。SpringBoot 基于约定优于配置的理念,原先大量的配置都可以省去,并且不推荐 XML 配置,改为 Java 配置。主要的配置可以写在 apaplication.properties 文件中。
除了 application.properties 文件,还支持 yaml 格式的 application.yml 和 bootstrap.yml
差别在于配置文件的加载顺序不同。
Spring Boot 配置文件的加载顺序是 bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml

以下是Spring Boot中的一些特点:
1:创建独立的spring应用。
2:嵌入Tomcat, Jetty Undertow 而且不需要部署他们。
3:提供的“starters” pom来简化Maven配置
4:尽可能自动配置spring应用。
5:提供生产指标,健壮检查和外部化配置
6:绝对没有代码生成和XML配置要求

7. 通过starter和依赖管理解决依赖问题。
8. 通过自动配置,解决配置复杂问题。

拓展:

Spring 是怎样引导配置的呢?
Spring支持传统的web.xml引导方式以及最新的Servlet 3+方法。

让我们看一下 web.xml方法的步骤:
Servlet容器(服务器)读取web.xml
web.xml中定义的DispatcherServlet由容器实例化
DispatcherServlet通过读取WEB-INF / {servletName} -servlet.xml来创建WebApplicationContext
最后,DispatcherServlet注册在应用程序上下文中定义的bean

SpringBoot 又是如何配置的呢?
Spring Boot应用程序的入口点是使用@SpringBootApplication注释的类:

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

  默认情况下,Spring Boot使用嵌入式容器来运行应用程序。在这种情况下,Spring Boot使用public static void main入口点来启动嵌入式Web服务器。此外,它还负责将Servlet,Filter和ServletContextInitializer bean从应用程序上下文绑定到嵌入式servlet容器。
Spring Boot的另一个特性是它会自动扫描同一个包中的所有类或Main类的子包中的组件。

结论

简而言之,我们可以说Spring Boot只是Spring本身的扩展,使开发,测试和部署更加方便。


原文链接:https://blog.csdn.net/qq_36525300/article/details/102886871

     https://blog.csdn.net/weixin_34177064/article/details/93029720

posted @ 2020-05-23 15:28  威威超酷  阅读(3210)  评论(0编辑  收藏  举报