springboot面试题

1、什么是springboot框架?有什么优点?

Spring Boot是一个快速开发框架,快速的将一些常用的第三方依赖整合(通过Maven子父亲工程的方式),简化xml配置,全部采用注解形式,内置Http服务器(Jetty和Tomcat),最终以Java应用程序进行执行。
简化spring应用开发,约定大于配置
springboot是微服务开发的基础架构。

(1)快速搭建开发框架。
(2)开箱即用:提供了各种默认的配置。约定大于配置。
(3)内嵌tomcat容器,直接使用jdk运行项目(jar包)。
java -jar jar包名称
(4)没有冗余代码生成,无需xml配置。
(5)开发简单,提高开发效率。

2、springboot有哪些常用注解?

@SpringBootApplication
@ComponentScan
@SpringbootTest
@ImportAutoConfiguration
@SpringBootConfiguration
@ImportResource
@PropertySource
@PropertySource
@Lazy

3、springboot如何自动配置?

只要使用了@EnableAutoConfiguration注解就能实现自动配置
Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器。


1、通过@EnableAutoConfiguration找到spring.factories文件
2、加载自动配置类XXXAutoConfiguration
3、通过自动配置类加载对应的配置信息
4、实例化bean

4、springboot项目(run方法)启动流程?

在这里插入图片描述
启动流程:
1、创建springbootapplication对象,完成初始化

(1)加载资源文件
(2)初始化构造器
(3)初始化监听器
(4)指定启动类(读取注解)

2、执行run方法

(1)打印banner
(2)启动监听器
(3)创建上下文
(4)加载配置信息
(5)刷新上下文

3、创建bean工厂,实例化所有bean

5、什么是启动器?有哪些常见的启动器?

启动器Starters包含了一系列可以集成到应用里面的依赖包,可以一站式集成spring技术而不需要另找依赖包。


1、spring-boot-starter-web(嵌入tomcat和web开发需要servlet与jsp支持)
2、spring-boot-starter-data-jpa(数据库支持)
3、spring-boot-starter-data-redis(redis数据库支持)
4、spring-boot-starter-solr(solr搜索应用框架支持)
5、mybatis-spring-boot-starter(第三方的mybatis集成starter)

6、springboot配置文件执行顺序

如果在不同的目录中存在多个配置文件,它的读取顺序是:
1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml

7、springboot如何进行环境配置?

提供多套配置文件,如:

applcation.properties
application-dev.properties
application-test.properties
application-prod.properties

然后再application.properties文件中指定环境,如:

spring.profiles.active=test

8、有哪些常见的页面静态化技术?

模板引擎:页面模板和数据的分离。

1、freemarker
2、velocity
3、thymeleaf

9、接口文档如何编写?

整合swagger在线接口文档
在启动类上加:@EnableOpenApi
也可以加在swagger配置类上。

@Api
加在controller类前。描述类的作用。
@ApiOperation
加在controller中的方法前。描述方法的作用。
@ApiImplicitParams
加在controller中的方法前。描述方法的参数(请求参数)。
@ApiResponses
加在controller中的方法前。描述方法的返回值(响应json数据)。
@ApiModel
加在实体类前,用于描述实体类的作用。
@ApiModelProperty
加在实体类的属性前,用于描述实体类的属性。

命名规范:
java属性名必须以两个及以上的小写字母开头!!!!
这意味着,数据库列名如果有多个单词构成,第一个单词必须有两个及以上的字母!!!!!

10、数据校验怎么完成?

  1. springboot整合spring validation
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  1. 在接口方法参数上加注解@Valid
 public   String  test1(@Valid User user){
        return   "vali   ok";
    }
  1. 在实体类属性上加校验注解
 @NotNull
    private   String   uuName;
  1. 统一异常处理
    如果参数校验失败,会报异常BindException。

  2. 数据校验的注解
    在这里插入图片描述

11、什么是 JavaConfig?

Spring JavaConfig 是Spring 社区的产品, 它提供了配置Spring IoC 容器的纯Java 方法。因此它有助于避免使用XML 配置。使用JavaConfig 的优点在于:

1、面向对象的配置。由于配置被定义为JavaConfig 中的类,因此用户可以充分利用Java 中的面向对象功能。一个配置类可以继承另一个, 重写它的@Bean方法等。
2、减少或消除XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在XML 和Java 之间来回切换。JavaConfig 为开发人员提供了一种纯Java 方法来配置与XML 配置概念相似的Spring 容器。从技术角度来讲,只使用JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将JavaConfig 与XML 混合匹配是理想的。
3、类型安全和重构友好。JavaConfig 提供了一种类型安全的方法来配置Spring容器。由于Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换或基于字符串的查找。

12、springboot配置文件有哪些格式?

spring-boot有三种配置文件的方式:properties、yaml、yml。spring-boot会自动加载properties、yaml和yml配置文件(yaml和yml是同一种格式,只是后缀名不一样)。当这三种配置文件同时存在时,加载顺序为:properties > yaml > yml 。当三种配置文件中的配置信息有冲突时,properties配置文件会覆盖后两种配置文件中的配置信息。

13、spring、springmvc、springboot区别?

1、Spring
Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。
2、SpringMVC
SpringMVC提供了一种分离式的方法来开发Web应用。通过DispathcherServlet,MoudlAndViewViewResolver等组件进行开发。
3、Springboot
SpringSpringMVC的问题在于需要配置大量的参数
Springboot是一个微服务框架通过自动配置和启动器来解决这个问题。

14、springboot静态资源如何处理

加载目录优先级:

classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/
webapp

自定义目录:

srping:
  mvc:static-path-pattern:/image/(**无括号)
  resource:
    static-locations:classpath:/images/

15、springboot如何打包运行

主要是通过maven 插件进行打包,将所有的项目依赖包都进行打包压缩,最终整个webServer项目生成一个jar文件包。
然后调用 java -jar xxxx-springboot.jar 进行运行,就完成了整个的项目运行了。

16、观察者模式

观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe),定义对象间一种一对多的依赖关系(注册),使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新(通知)。说白了就是个注册,通知的过程。

观察者模式的主要角色如下:

  • 抽象主题(Subject)角色:也叫抽象目标类,它提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法,以及通知所有观察者的抽象方法。
  • 具体主题(Concrete Subject)角色:也叫具体目标类,它实现抽象目标中的通知方法,当具体主题的内部状态发生改变时,通知所有注册过的观察者对象。继承Subject类,在这里实现具体业务,在具体项目中,该类会有很多变种。
  • 抽象观察者(Observer)角色:它是一个抽象类或接口,它包含了一个更新自己的抽象方法,当接到具体主题的更改通知时被调用。
  • 具体观察者(Concrete Observer)角色:实现抽象观察者中定义的抽象方法,以便在得到目标的更改通知时更新自身的状态。

观察者模式是一种对象行为型模式,其主要优点如下:

  1. 降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。符合依赖倒置原则。
  2. 目标与观察者之间建立了一套触发机制。

它的主要缺点如下:

  1. 目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。
  2. 当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值