• 1.spring boot面试题


    Spring Boot基础

    1.什么是spring boot?

    通过自动配置方式简化Spring应用的开发,弱化配置,遵循约定大于配置的原则,使开发者专注于业务开发而无需过多考虑配置相关操作,通过启动类的main方法一键启动应用。

    2.spring boot有哪些有点?

    1、独立运行
         内嵌了servlet,tomat等,不需要打成war包部署到容器中,只需要将SpringBoot项目打成jar包就能独立运行。 
    2、简化配置
         启动器自动依赖其他组件,简少了 maven 的配置。各种常用组件及配置已经默认配置完成,无需过多干预。
    3、避免大量的Maven导入和各种版本冲突 4、应用监控 Spring Boot 提供一系列端点可以监控服务及应用。

    3.spring boot的核心注解是什么?由哪些注解组成?

      核心注解为:@SpringBootApplication

      该注解主要由三个注解组成:

        @SpringBootConfiguration:代表当前是一个配置类

        @EnableAutoConfiguration:启动自动配置

        @ComponentScan:指定扫描哪些Spring注解

    4.SpringBoot自动配置的原理是什么?

    1、SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。
    
    2、查看@EnableAutoConfiguration,其作用是利用AutoConfigurationImportSelector给容器中导入一些组件。
    
    3、然后这个注解会扫描所有jar包类路径下"META-INF/spring.factories"
    
    4、然后把扫描到的这些文件包装成Properties对象。
    
    5、从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。
    简而言之,整个过程就是将类路径下"META-INF/spring.factories"里面配置的所有EnableAutoConfiguration的值加入到容器中。

    5.如何理解spring boot配置加载顺序?

    依次为: bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml

    其中 bootstrap.properties 配置为最高优先级

    先加载的会被后加载的覆盖掉,所以.properties和.yml同时存在时,.properties会失效,.yml会起作用

    6.运行 SpringBoot 有哪几种方式?

    1、直接执行 main 方法运行
    2、打包用Java命令行执行
    3、用 Maven/ Gradle 插件运行

    7.SpringBoot 需要独立的容器运行吗?

    不需要,SpringBoot内置tomcat/jetty等容器

    8.开启SpringBoot 特性有哪几种方式?

      继承spring-boot-starter-parent项目

      导入spring-boot-dependencies项目依赖 

    9.SpringBoot、Spring MVC和Spring有什么区别?

    Spring:主要用来创建IOC容器,依赖注入,实现程序间的松耦合
    SpringMVC: 主要是用来做WEB开发,通过各种组件的协调配合,简化Web应用的开发
    SpringBoot: SpringBoot更像是一个管家,当使用到对应功能时,只需要导入指定应用启动器,SpringBoot就能够在底层默认其配置,大大简化了开发所需的繁杂配置

    10.SpringBoot启动时都做了什么?

    1.SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值

    2.将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;

    3.整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;

    4.它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;

    5.有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作

    SpringBoot配置

    1,什么是YAML?

    YAML 是一种人类可读的数据序列化语言。它通常用于配置文件。与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加结构化,而且更少混淆。可以看出 YAML 具有分层配置数据。

    2.YAML 配置的优势在哪里 ?

    1 配置有序,在一些特殊的场景下,配置有序很关键
    2 支持数组,数组中的元素可以是基本数据类型也可以是对象
    3 简洁

    相比 properties 配置文件,YAML 还有一个缺点,就是不支持 @PropertySource 注解导入自定义的 YAML 配置。

    3.SpringBoot 是否可以使用 XML 配置 

    SpringBoot推荐使用 Java 配置而非 XML 配置,但是 SpringBoot 中也可以使用 XML 配置,通过 @ImportResource 注解可以引入一个 XML 配置。

    4.SpringBoot核心配置文件是什么?

    bootstrap.propertiesapplication.properties

    5.bootstrap.properties和application.properties 有何区别 ?

      bootstrap(.yml 或者 .properties):boostrap 由父 APPlicationContext 加载的,比APPlicaton优先加载,配置在应用程序上下文的引导阶段生效。一般来说我们在                                                                    SpringCloud Config 或者Nacos中会用到它。且boostrap里面的属性不能被覆盖;

      APPlication (.yml或者.properties):由APPlicatonContext 加载,用于 SpringBoot项目的自动化配置。

    6.什么是Spring Profiles?

    为了适应多环境配置,可以在项目中配置多个application配置文件,根据应用场景不同,通过application-*中的*来决定启用某个配置文件。

    SpringBoot安全性

    1.如何实现SpringBoot应用程序的安全性?

    为了实现SpringBoot的安全性,我们使用spring-boot-starter-security依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter并覆盖其方法。 

    2.比较一下Spring Security 和Shiro各自的优缺点 ?

    3.SpringBoot中如何解决跨域问题 ?

    4,什么是 CSRF 攻击?

    5.SpringBoot 中的监视器是什么?

    6.如何在SpringBoot中禁用Actuator端点安全性?

    7.如何监视所有SpringBoot微服务?

    SpringBoot进阶

    1.什么是 WebSockets?

    2.什么是 Spring Data?

    3.什么是 Spring Batch?

    4.什么是 FreeMarker 模板?

    5.如何集成 SpringBoot和ActiveMQ

    6.Swagger用过麽?他用来做什么?

    7.前后端分离,如何维护接口文档 ?

    8.SpringBoot项目如何热部署

    9.SpringBoot 中的starter到底是什么 ?

    10.spring-boot-starter-parent 有什么用?

    11.SpringBoot 打成的jar和普通的jar有什么区别 ?

    12.如何使用SpringBoot实现异常处理?

    13.如何使用SpringBoot实现分页和排序?

    14.微服务中如何实现 session 共享?

    15.SpringBoot 中如何实现定时任务?

  • 相关阅读:
    在Java中使用 break/continue 语句来控制多重嵌套循环的跳转
    Android系统架构基本模式解析
    添加蓝牙通讯功能
    wince串口蓝牙
    Android各层推荐开发书籍及参考资料
    CDEFINES的用法
    蓝牙地址的规则
    WinCE中sources文件中targetlibs与sourcelibs的作用与区别
    Java初学者不得不知的概念,JDK,JRE,JVM的区别?
    WINCE的内存配置config.bib文件的解析
  • 原文地址:https://www.cnblogs.com/midiyu/p/16610127.html
Copyright © 2020-2023  润新知