首页 > 其他分享 >Spring Boot 面试,一个问题就干趴下了!

Spring Boot 面试,一个问题就干趴下了!

时间:2022-09-02 21:01:31浏览次数:64  
标签:spring 配置 Boot druid jar 趴下 Spring

  最近有很多人面试,其中不乏说对 Spring Boot 非常熟悉的,然后当我问到一些 Spring Boot 核心功能和原理的时候,没人能说得上来,或者说不到点上,可以说一个问题就问趴下了!

  这是我的问题:

  我看你上面写了熟悉 Spring Boot,那你能讲下为什么我们要用 Spring Boot 吗?

  下面我列几个最常见的三个回答:

  A:Spring Boot 最主要是不用 XML 配置,可以用 Java 来配置 bean,省去了许多配置文件。

  我又问:Spring 本身就可以用 Java 配置代替 XML 配置,和 Spring Boot 有什么关系呢?

  然后对方就吱吱唔唔了……

  B:Spring Boot 我们用来做 Spring Cloud 微服务。

  我又问:微服务和 Spring Boot 有什么关系?不用 Spring Boot 行不行?

  然后对方就吱吱唔唔了……

  C:Spring Boot 可以打 jar 包部署,内部集成了Tomcat。

  这个确实是 Spring Boot 的特色,但是我还是觉得没有答到关键点上。

  然后我继续问,如果不考虑打 jar 包部署呢,然后就没然后了……

  为什么我们要用 Spring Boot,显然上面三个求职者没有答到关键点上,Spring Boot 最重要的功能是:自动配置。

  为什么说是自动配置?

  Spring Boot 的开启注解是:@SpringBootApplication,其实它就是由下面三个注解组成的:

  @Configuration@ComponentScan@EnableAutoConfiguration

  上面三个注解,前面两个都是 Spring 自带的,和 Spring Boot 无关,所以说上面的回答的不是在点上。

  所以说 Spring Boot 最最核心的就是这个 @EnableAutoConfiguration 注解了,它能根据类路径下的 jar 包和配置动态加载配置和注入bean。

  举个例子,比如我在 lib 下放一个 druid 连接池的 jar 包,然后在 application.yml 文件配置 druid 相关的参数,Spring Boot 就能够自动配置所有我们需要的东西,如果我把 jar 包拿掉或者把参数去掉,那 Spring Boot 就不会自动配置。

  这样我们就能把许多功能做成公共的自动配置的启动器(starters),其实 druid 连接池就是这么做的,它提供了针对 Spring Boot 的启动器:druid-spring-boot-starter。

  有了这个自动配置的启动器,我们就能非常简单的使用它,

  先添加 jar 包依赖:

  

  com.alibaba

  druid-spring-boot-starter

  1.1.10

  

  再添加相关参数:

  spring.datasource.url=spring.datasource.username=spring.datasource.password=……

  如果是传统的项目,我们要自己手动写一大堆的配置,而且还不灵活,有了这个启动器,我们就可以做到简单集成。具体大家可以看 druid-spring-boot-starter 是怎么实现的,也可以参考之前写的文章:Spring Boot自动配置原理、实战。

  所以,这才是 Spring Boot 的核心,这才是我们为什么使用 Spring Boot 的原因。如果答不到这个关键点,那真没有掌握到 Spring Boot 的核心所在。

  好了,今天的分享就到这里,关注Java技术栈微信公众号,在后台回复:boot,获取栈长整理的更多的 Spring Boot 教程,都是实战干货,以下仅为部分预览。

  Spring Boot 读取配置的几种方式Spring Boot 如何做参数校验?Spring Boot 最核心的 25 个注解!Spring Boot 2.x 启动全过程源码分析Spring Boot 2.x 新特性总结及迁移指南……

标签:spring,配置,Boot,druid,jar,趴下,Spring
From: https://www.cnblogs.com/ebuybay/p/16651211.html

相关文章

  • SpringMVC
    一、SpringMVC1、回顾MVC1.1、什么是MVCMVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。是将业务逻辑、数据、显示分离的方法来组织......
  • Spring注解使用
    声明Bean的注解@Controller控制层@Service业务层@Repository持久化层以上三个注解都是@Component的延申,同时也是可以使用这个注解来替代以上三个注解的任意一......
  • SpringMvc(一)-初识
    1、环境搭建1.1jar包<spring.version>4.3.18.RELEASE</spring.version><!--spring-mvcbegin--><dependency><groupId>org.springframework</groupId><a......
  • springboot的简单使用(3)
    1.5第五章接口架构风格—RESTful1.5.1认识RESTREST(英文:RepresentationalStateTransfer,简称REST)一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客......
  • Spring boot多Rabbit MQ配置创建队列到指定MQ
    1、场景springboot整合rabbitmq,需要将队列queue1、queue2分别放在不同的MQ服务上MQ1、MQ2。2、环境准备MQ1:IP:192.168.1.110队列:queue1MQ2:IP:172.16.1.220队列:queu......
  • 放弃FastDFS!SpringBoot整合MinIO实现分布式文件服务,真香!
    今天分享一个非常不错且开源的分布式存储组件MinIO,有很多朋友在用。什么是MinIO?Minio是个基于Golang编写的开源对象存储套件,基于ApacheLicensev2.0开源协议,虽然轻量......
  • 外置tomcat方式部署springboot
    目录外置tomcat方式部署springboot1、打包方式的改变2、去除springboot中内置的tomcat(.xml中)3、启动类中增加继承SpringBootServletInitializer,重写configure方法外置tom......
  • spring注解开发
    @Componet组件,放在类上,说明这个类被spring管理了,就是bean类前加这个注解,相当于bean等价于<beanid="xxx"class="xxxxxx"/>名字默认是类的名字的小写@Value("xxx")相......
  • springboot~Screw生成数据库文档
    数据库说明文档,在我们开发项目时是非常必要的,有时项目交付时,客户也是需要让我们提供的,而如果人工编写,比如耗时,通过screw组件来生成文档,非常方便。源代码和使用:https://g......
  • 七(一)、activemq queue整合spring
    一、前言spring代码基于SSM整合(spring-springmvc-mybatis)之CRUD ;代码地址:(基础班:https://gitee.com/joy521125/ssm-senior-base.gitmaven版:https://gitee.com/joy5211......