常见SpringBoot面试问题

1.介绍下SpringBoot

答: Spring Boot就是一个java web的开发框架,与 MVC类似,对比其他java web框架的好处,官方说是简化开发,约定大于配置, you can “just run”,能迅速的开发web应用,几行代码开发一个http接口。SpringBoot它是基于Spring创建的一个上层应用级框架。从14年发布1.0版本 ,17年发布2.0版本。它比以前那种SSSM框架,基于配置的开发更为高效

2.SpringBoot有哪些优点

答:

• 独立运行,内嵌式容器简化Web项目
• 开箱即用,提供各种默认配置来简化项目配置
• 自动配置
• 没有冗余代码生成和XML配置

• 自带Actuator应用监控

3.SpringBoot中核心注解

答:

1.@SpringBootApplication

它是一个组合注解.里面包含@SpringBootConfiguration ,@EnableAutoConfiguration ,@ComponentScan 三个注解

2.@ComponentScan

自动扫描当前包及子包下被@Component,@Controller,@Service,@Repository注解标记的Java类,将其作为bean加载到IOC容器中。 不指定范围则默认从注解所在类的包下进行扫描。

3.@SpringBootConfiguration
组合了@Configuration注解,即被SpringBootApplication标记的类是个Java配置类

SpringBoot使用Java Config技术进行配置,Java Config使用注解和Java代码的方式代替xml配置文件

任何一个标注了@Configuration的Java类定义都是一个JavaConfig配置类。
任何一个标注了@Bean的方法,其返回值将作为一个bean定义注册到Spring的IoC容器,方法名将默认成该bean定义的id。

4.@EnableAutoConfiguration

打开自动装配功能, SpringBoot根据META-INF/spring.factories文件里加载需要自动注入的java类

4.SpringBoot自动装配原理

答:

在启动SpringBoot项目的main方法的头部有一个@SpringBootApplication注解,在这个注解中组合一个EnableAutoConfiguration注解,此注解的是打开自动装配功能,此注解里又包含了一个@Import注解。在注解中引入了AutoConfigurationImportSelector类,在此类里的selectImports方法会读取META-INF/spring.factories文件里需要被自动装配的所有配置类,然后通过META-INF下面的spring-autoconfigure-metadata.properties文件做条件过滤。最后返回的就是需要自动装配的相关对象

5.SpringBoot的starter

答:

starter的作用是在META-INF目录下提供了一个spring.factories文件,在文件中我们添加了一个需要注入到Spring容器中的对应配置类。比如 第三方的框架要整合到SpringBoot项目中,也就是需要把第三方框架的核心组件注入到Spring容器中,提供的方式就是spring.factories文件

starter也可以理解为一个启动器

6.SpringBoot项目需要单独的Web容器吗

答:不需要,SpringBoot项目会添加spring-boot-starter-web依赖,此依赖里内嵌了tomcat容器。可以直接运行启动。

7.SpringBoot常用的starter

答:

spring-boot-starter-web 提供了SpringMVC 和内嵌tomcat容器

spring-boot-starter-data-jpa 提供了SpringJPA和Hibernate

spring-boot-starter-redis 提供了redis服务

mybatis-spring-boot-starter 提供了mybatis框架操作

8.SpringBoot项目启动方式

答:

  1. 通过main方法运行

  2. 打成jar 通过 java -jar 命令运行 或者打成war包 放在web容器运行

  3. 使用Maven/Gradle插件运行

 

9.SpringBoot项目跨域问题

答:

1.可以通过JSONP类解决跨域问题,但只支持GET方式请求

2.SpringBoot中可以实现WebMvcConfigurer接口 重写其addCorsMappings方法,在这个方法中我们添加允许跨域相关的请求

10.SpringBoot项目使用log4j

答:

在springboot项目中默认提供 了 日志框架LogBack 所以我们如果需要引入log4j的话,必须先排查logback的依赖 然后再添加log4j的依赖,然后在src/main/resources目录下创建log4j.proerties文件,然后就可以进行日志的相关配置