SpringBoot(4) 与Spring的区别

学习了spring框架,不免需要将两种框架进行比较。

Spring boot是一个在Spring 的基础上搭建的全新的微框架,其目的是简化Spring的搭建和开发过程。

SpringBoot的6个好处:

  1. Spring Boot可以建立独立的Spring应用程序;
  2. 内嵌了如Tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再做部署工作了。
  3. 无需再像Spring那样搞一堆繁琐的xml文件的配置;
  4. 可以自动配置Spring;(SpringBoot将原有的XML配置改为Java配置,将bean注入改为使用注解注入的方式(@Autowire),并将多个xml、properties配置浓缩在一个appliaction.yml配置文件中。)
  5. 提供了一些现有的功能,如量度工具,表单数据验证以及一些外部配置这样的一些第三方功能;
  6. 提供的POM可以简化Maven的配置;((开发库,例如spring-webmvc、jackson-json、validation-api和tomcat等),提供的POM可以简化Maven的配置。当我们引入核心依赖时,SpringBoot会自引入其他依赖。)
关于执行顺序:

如果把SpringBoot应用打成jar包时,那么应用内部默认嵌入了Servlet容器。应用启动执行顺序如下:

  • 执行SpringBootApplication的Run方法;
  • 启动IOC容器;
  • 创建嵌入式Servlet容器;

若把SpringBoot应用打成war包时,那么与Spring在Servlet容器中启动执行是一样的。启动执行顺序如下:

  • 启动Servlet容器;
  • 服务器启动SpringBoot应用;
  • 启动IOC容器;
关于springboot与SSM框架全注解开发的区别:

(问这个问题的前提是springboot与SSM全注解开发都是将原有的xml配置改为Java配置,将bean注入 改为 注解注入的过程)

想知道 starter 依赖为我们做了哪些,我们首先看搭建 SSM 框架时,我们需要哪些步骤

1.加相关的 jar 包

2.配置 web.xml,加载 Spring,SpringMVC

3.配置数据库连接,spring 事务

4.配置加载配置文件的读取,开启注解

5.配置日志文件

6.配置完成,部署 tomcat 调试

实际上在完成上述的六步需要花费大量的时间:关键在于建这个项目有很多难点,如 包之间的相互依赖,不确定中间有没有冲突,升级版本可能也会导致冲突,bean 配置数据源,事务,切面时,依赖关系搞不清楚。

springboot为什么这么快呢?

springboot 为何能如此快的创建一个项目呢,难道它不需要配置 bean 吗,难道它不需要引入 jar 包吗。当然,这些都是需要的,它和 SSM 最大的区别就是,这些配置 springboot 都帮我们做好了,我们才可以如此高效的创建一个 springboot 项目。

根据pom文件中的starter依赖帮助完成了诸多的依赖控制,springboot 框架使用 starter 依赖主要帮我们做了两点:

​ 1.引入相关的 jar

​ 2.自动完成 bean 配置。

当我们创建 springboot 项目时选择 mybatis,mysql 组件,pom 文件帮我们加入了对应的 starter。这些 starter,正是它们帮我们引入了相关的 jar 包,虽然项目里只有这几个依赖,但可以看到 maven 已经帮我们下载了这么多 jar 包,

​ 1,springboot 通过条件依赖注解解决了 bean 之间的冲突

​ 2,bean 需要的参数可以在 yml / properties文件里配置

在 application.properties 文件中配置了数据库连接地址,登录名,密码,以及 mybatis 的一些参数,但这些参数是怎么被读取的呢 ?

在 MybatisAutoConfiguration.class 文件中,有这么一个注解@EnableConfigrationProperties,

MybatisProperties.class中的属性,就是我们在 yml/properties 里配置的一些参数,所以下次想知道 mybatis 可以配置什么参数,我们就可以进这个文件里看看有哪些属性了

当然你肯定发现,我们在 yml/properties 配置参数时,编译器会帮我们自动补全,这个主要是扫描一个 json 文件

3,bean 配置通过 spring.factories 文件加载

当我们启动项目时,会扫描 jar 包 META-INF 文件夹下的 spring.factories 文件,就会去加载对应的配置文件

starter 帮我们做了这部分内容,我们就可以考虑,把一些通用的组件,制成一个属于我们自己的 starter

1.首先我们要再重申一下 starter 的两个重要作用

a. 引入相关的 jar;

b. 自动配置;

  1. starter 的命名规范

a. spring 提供的 starter:

spring-boot-starter-XXX-x.y.z.jar

spring-boot-XXX-autoconfigure-x.y.z.jar

b. 第三方提供的 jar

XXX-spring-boot-starter-x.y.z.jar

XXX-spring-boot-autoconfigure-x.y.z.jar

  1. 自己制作第三方 starter 的步骤

a.准备第三方的 jar

新建一个 maven 工程,写好需要的功能,执行 maven install,打成 jar 包

b.制作 starter

​ (1)新建一个 springboot 工程,引入刚打成的 jar 包,为了生成配置元信息,引入一个依赖

 <dependency>
    <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-configuration-processor</artifactId>
</dependency>  

(2)编写自动配置类

(3)在 resource 下新建 META-INF 文件夹,在该文件夹下建 spring.properties 文件,确定spring要加载,启用这个配置.

这样,启动项目时,就会加载编写的配置类,生成需要的 bean。把这个项目打成 jar 包,我们的第一个 starter 就做好了,在自己项目中引入我们做好的 jar 包,就可以开始使用啦,是不是很简单,springboot 使用 starter 简化了我们的配置,还让我们可以自己制作 starter,把自己常用的一些功能制成可以通用的 jar 包,实在为我们的开发提供了很大的便利,我们不仅要会使用它,还要明白里面的原理,这样面对问题时,才能很快找到问题所在。

借鉴博客:https://www.cnblogs.com/fightingting/p/10630936.html

由此我们才看到 SSM 和 Springboot 的最大区别,所以下次面试官再问你这两者的区别,你可以这样回答:

1.Springboot 将原有的 xml 配置,简化为 java 注解

2.使用 IDE 可以很方便的搭建一个 springboot 项目,选择对应的 maven 依赖,简化Spring应用的初始搭建以及开发过程

3.springboot 有内置的 tomcat 服务器,可以 jar 形式启动一个服务,可以快速部署发布 web 服务

4.springboot 使用 starter 依赖自动完成 bean 配置,,解决 bean 之间的冲突,并引入相关的 jar 包(这一点最重要)

springboot 中起着重要作用的是 starter,starter 主要有两个作用:

1.引入相关的 jar 包

2.自动完成 bean 的配置

当我们创建 springboot 项目时选择 mybatis,mysql 组件,可以看到 pom 文件帮我们加入了对应的 starter。

Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

  • 启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,
  • 主要组合包含了以下 3 个注解:
    • @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
    • @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,
      • 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
    • @ComponentScan:Spring组件扫描。

Spring Boot 自动配置原理是什么?

  • 注解 @EnableAutoConfiguration, @Configuration, @ConditionalOnClass 就是自动配置的核心,
    • 首先它得是一个配置文件,
    • 其次根据类路径下是否有这个类去自动配置。

如何理解 Spring Boot 中的 Starters?

  • Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,
  • 你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。
  • 如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值