《面试宝典》 2019年springboot面试高频题(java)

前言

2019年已经成为了过去,借此机会想好好总结一下2019年项目研发的成效,看看在项目从无到有,都经历了那些变化?取得了哪些成果?踩过哪些坑?一个人、一个研发团队要想有质的飞跃,必须善于反思过去,总结经验,只有这样才能精准的定位问题并制定有效的改进措施。

1、什么是 Spring Boot?

“Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。


用过springboot的社友应该都知道,搭建一个完整的spring项目,我们得配置依赖,配置spring的xml。其中一大难点,就是jar包冲突的问题。


Spring Boot让我们更关注于业务逻辑的开发,大大的提高了我们的效率,是从事微服务开发必点的一个技能点。

2、Spring Boot有哪些优点?

避免大量的Maven导入和各种版本冲突
减少开发学习时间,支持各种技术的start。
提高内置的tomcat,可以直接运行。
Spring Boot使监控变得简单(actuator)
基于不同环境,使用对应的配置(dev,pro等等),再也不用像以前一样手动改配置咯。
注意:springboot对于我们开发是方便了不少,但是,建议,我们先学习spring后,再来使用springboot,因为springboot是从spring上衍生出来的,不然,在springboot的学习过程中,会有点懵,不知道为什么要这样配置,底层是怎么样实现的。

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

.properties 和 .yml,它们的区别主要是书写格式不同,社长强烈推荐使用yml格式,有层次感,方面阅读。

4、什么是 Spring Boot Stater ?

Springboot方便的一个地方,就是内部封装了很多的Stater
列举一些常用的Stater
应用日志:spring-boot-starter-logging
快速web应用开发:spring-boot-starter-web
面向切面编程:spring-boot-starter-aop
集成rabbitMQ:spring-boot-starter-amqp
注意:集成过程中,springboot会默认一些配置,需要我们开发了解集成技术点的一些配置。

5.创建一个 Spring Boot Project 的最简单的方法是什么?

通过idea创建一个Spring Initializr项目,注意eclipse需要下载STS插件。

6.springboot项目可以通过哪几种方式运行?

1)打成jar包,通过java -jar  jar包名运行
2) 打成war包,放入容器中运行,官网建议生产环境使用打成war包方式。

7.springboot如何实现热部署?

springboot默认是不默认启动热部署的,需要我们自己加入热部署的依赖,springboot有两个classloader存在,分工明确,一个辅助管理jar包,另外一个restartClassloader用来封装用户的代码,修改代码是会重启restartClassloader,当文件改动后,部分重启,所以重启效率相对于传统的ssm框架重启速度更快

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <optional>true</optional>
</dependency>

8. Spring Boot 如何定义多套不同环境配置?

1)编写多个application.yml文件,以生产和本地为例子
application.yml
application-pro.yml
application-dev.yml
2)切换application.yml 里面对应的值
spring:
  profiles:
    active: dev
建议,通过分布式配置中心来进行管理,可以使用携程的apollo

9. Spring Boot 最核心的 3 个注解详解?

Springboot的一个入口就是main方法,我们可以观察到springboot项目的主类上必有一个@SpringBootApplication注解。实际上他等价于@Configuration,@EnableAutoConfiguration 和 @ComponentScan这三个注解的组合。


@Configuation:

加载Spring方法
配置spring并启动spring容器

@EnableAutoConfiguration 注解:

点击这个注解,查看他的源码,发现他通过@import实现了@Import(AutoConfigurationImportSelector.class)

@ComponentScan:

描述表的扫描范围

公众号:程序猿学社

每周实时更新

posted @ 2020-01-02 18:17  程序猿学社  阅读(246)  评论(0编辑  收藏  举报