SpringBoot基础面试题

什么是SpringBoot

Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。

springBoot优缺点

  • 优点:
    • 继承了Spring优秀的底层框架
    • 简化编码
      • Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中,我们只需要在 pom 文件中添加如下一个 starter-web 依赖即可Spring Boot 这个 starter-web 已经包含了多个依赖,包括之前在 Spring 工程中需要导入的依赖
    • 简化配置
      • Spring Boot更多的是采用 Java Config 的方式,对 Spring 进行配置
    • 简化部署
      • 在使用 Spring 时,项目部署时需要我们在服务器上部署 tomcat,然后把项目打成 war 包扔到 tomcat里,在使用 Spring Boot 后,我们不需要在服务器上去部署 tomcat,因为 Spring Boot 内嵌了 tomcat,我们只需要将项目打成 jar 包,使用 java -jar xxx.jar一键式启动项目。

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

启动类上面有一个注解是@SpringBootApplication,它也是 Spring Boot 的核心注解

  • SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能
  • EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能
  • ComponentScan:Spring组件扫描。

Spring Boot 的配置文件有哪几种格式?它们有什么区别?

  • 在properties文件中是以”.”进行分割的, 在yml中是用”:”进行分割;
  • yml的数据格式和json的格式很像,都是K-V格式,并且通过”:”进行赋值;
  • 在yml中缩进一定不能使用TAB,否则会报很奇怪的错误;
  • 程序会先加载yml文件,再加载properties文件

springBoot的自动装配

[springboot自动装配原理剖析]

  1. 在springboot的主配置类中有一个@SpringBootApplication注解
  2. 这SpringBootApplication注解中有三个重要注解: @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
    @SpringBootConfiguration封装了spring原生的@Configuration注解 ,
    @ComponentScan注解用来定义IoC容器需要扫描哪些类文件。
  3. @EnableAutoConfiguration注解是自动装配的核心
    在@EnableAutoConfiguration中通过@Import注解导入AutoConfigurationlmportSelector自动装配类
    这个自动装配类实现了DeferredImportSelector接口,DeferredImportSelector接口又继承了ImportSelector接口
    在ImportSelector接口中有一个selectImports方法
  4. AutoConfigurationImportSelector类中重写了selectImports方法
    这个方法返回的是一个数组,里面装的是自动装配的包的路径,作用是找到满足配置的所有带注解的类,然后交给Spring进行处理
  5. 在selectImport方法中调用了getAutoConfigurationEntry方法,这个方法先判断是否进行自动装配,如果需要,会调用getCandidateConfigurations方法
  6. 在getCandidateConfigurations方法中调用SpringFactoriesLoader类
    SpringFactoriesLoader类会读取springbootJAR包里的META-INF/spring.factories文件下的EnableAutoConfiguration的配置确定要装配的类
  7. SpringBoot的自动化配置重度依赖@EnableAutoConfiguration注解、SpringFactoriesLoader类、META-INF/spring.factories文件等要素。

运行 Spring Boot 有哪几种方式?

  • 打包用命令或者放到容器中运行
  • 用 Maven/Gradle 插件运行
  • 直接执行 main 方法运行

SpringBoot注解

  • @Override  重写, 标识覆盖它的父类的方法
  • @Deprecated   已过期,表示方法是不被建议使用的
  • @Repository:   用于标注数据访问组件,即DAO组件
  • @Service:    用于标注业务层组件
  • @Controller:    用于标注控制层组件
  • @Component:    把该中立的类交给spring管理
  • @Autowired:    自动装配,将bean容器里的值自动注入到bean
  • @Transactional:    声明这service所有方法都需要事务管理。每一个业务方法开始时都会打开一个事务

推荐阅读:
springboot的注解的作用说明(全)

自动装配原理

springboot是通过main方法下的SpringApplication.run方法启动的,启动的时候他会调用refshContext方法,先刷新容器,然后根据解析注解或者解析配置文件的形式祖册bean,而它是通过启动类的SpringBootApplication注解进行开始解析的,他会根据EnableAutoConfiguration开启自动化配置,里面有个核心方法ImportSelect选择性的导入,根据loadFanctoryNames根据classpash路径以MATA-INF/spring.factorces下面以什么什么EnableAutoConfiguration开头的key去加载里面所有对应的自动化配置,他并不是把这一百二十多个自动化配置全部导入,在他每个自动化配置里面都有条件判断注解,先判断是否引入相互的jar包,再判断容器是否有bean再进行注入到bean容器

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值