1、什么是springboot?

springboot是快速开发的spring框架,能够快速整合主流框架,简化xml配置,采用全注解化,内置http服务器(Tomcat、jetty),通过Java部署运行。

2、为什么要用springboot?

快速开发,快速整合,配置简化、内嵌Tomcat容器

3、springboot的启动的方式?

启动类使用@SpringBootApplication注解或者@ComponentScan和@EnableAutoConfiguration及@SpringBootConfiguration(内部为@Configuration):被标注的类等于在spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个spring的上下文环境。

使用@SpringBootApplication时注意自动扫描当前包

4、springboot和springmvc的区别?

springmvc是基于springboot的文本开发框架

5、springboot和springcloud的区别?

springboot是快速开发的spring框架,主要解决springcloud微服务的模块的功能的实现,springcloud是完整的微服务框架,关注于微服务的全局治理。SpringCloud依赖于SpringBoot。

6、springboot中用那些注解?

@SpringBootApplication是一个组合注解。相当于@EnableAutoConfiguration(自动扫描并添加jar包依赖,开启springboot的注解)和@ComponentScan(组件扫描,可自动发现和装配Bean,默认扫描SpringApplication的run方法里的Booter.class所在的包路径下文件,所以最好将该启动类放到根包路径下。)

@Target(ElementType.Type) //他是用来描述注解的适用范围,其中Type是用来描述类、接口、包括的注解的类型以及枚举的声明。

@Retention(RetentionPolicy.RUNTIME) //注解的生命周期,并且保留到class文件中(三个生命周期)

@Documented //表明这个注解应该被javadoc记录

@Inherited //子类可以继承该注解

7、springboot热部署使用什么?

devtools

8、热部署的原理是什么?

热部署的实现原理主要依赖于java的类加载机制,实现方式可以概括为在容器启动的时候起一条后台线程,定时的检测类文件的时间戳的变化,如果类的时间戳改变了,就重新加载整个类文件,同时重启服务,重新部署。

9、热部署原理和热加载的区别是什么?

热加载是在运行时重新加载class文件,不会重启服务。

10、你们在项目中异常是如何处理的?

在web项目中,使用全局捕获异常返回统一的错误信息。

11、springboot如何实现异步执行?

在启动类添加@EnableAsync表示开启对异步任务的支持,在异步服务上添加@Async

12、springboot多数据源拆分的思路?

先在properties配置中配置两个数据源,创建分包mapper,使用@ConfigurationProperties读取properties中的配置,使用@MapperScan注册到对应的mapper包中

13、springboot多数据源事务如何管理?

第一种:在service层的@TransactionManager中使用transactionManager指定DataSourceConfig中配置的事务

第二种:使用jta-atomikos实现分布式事务管理

14、springboot如何实现打包?

一种是一种是打包成jar包直接在开发工具中执行,另一种是打包成war包放到tomcat服务器下。

进入项目目录在控制台输入mvn clean package,clean是清空已存在的项目包,package进行打包

15、springboot性能如何优化?

如果项目比较大,类比较多,不使用@SpringBootApplication,采用@Compoment指定扫包范围

在项目启动时设置JVM初始内存和最大内存相同

将springboot内置服务器由tomcat设置为undertow(下层)

16、springboot执行流程?

使用SpringApplication.run()启动,在该方法所在类添加@SpringBootApplication注解

该注解由@EnableAutoConfiguration和@ComponentScan等注解组成

@EnableAutoConfiguration自动加载SpringBoot配置和依赖包,默认使用@ComponentScan扫描当前包及子包中的所有类,将有spring注解的类交给spring容器管理

17、springboot的底层实现原理?

使用maven父子包依赖关系加载相关jar包,使用java操作Spring的初始化过程生成class文件,然后用java创建tomcat服务器加载这些class文件

18、springboot装配bean的原理?

通过@EnableAutoConfiguration自动获取配置类信息,使用反射实例化为spring类,然后加载到spring容器

19、springboot日志?

引入Commons-logging会在控制台自动输出

更多推荐

SpringBoot的常用面试题