Java SpringBoot常见面试问题
常见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项目启动方式
答:
通过main方法运行
打成jar 通过 java -jar 命令运行 或者打成war包 放在web容器运行
使用Maven/Gradle插件运行
9.SpringBoot项目跨域问题
答:
1.可以通过JSONP类解决跨域问题,但只支持GET方式请求
2.SpringBoot中可以实现WebMvcConfigurer接口 重写其addCorsMappings方法,在这个方法中我们添加允许跨域相关的请求
10.SpringBoot项目使用log4j
答:
在springboot项目中默认提供 了 日志框架LogBack 所以我们如果需要引入log4j的话,必须先排查logback的依赖 然后再添加log4j的依赖,然后在src/main/resources目录下创建log4j.proerties文件,然后就可以进行日志的相关配置






