面试题(springboot)

Springboot自动配置原理?

自动配置的注解@EnableAutoConfiguration
通过这个注解可以引入自动配置jar包下面的配置类信息

SpringApplication.run : 启动SpringBoot应用

主程序的注解

@SpringBootApplication:包括三个标签组成

@EnableAutoConfiguration : 开启自动配置功能

@SpringBootConfiguration - @Configuration : Spring的配置标签

@ComponentScan :组件自动扫描

dependencyManagement:该标签下的jar包,默认是不能被子项目直接使用的 , 他只有声明的功能 , 如果只项目想用这里标签里面的jar包 ,需要显示的写出来 ,而版本号使用父工程的。达到版本号统一管理的效果

dependencies:这个标签下面的jar包默认会被子项目直接继承使用

 

Spring MVC运行原理?

运行原理(客户端发出请求——过滤器——SpringMVC的前端控制器DispatcherServlet——拦截器preHandle方法——映射器——控制器——拦截器postHandle——拦截器afterCompletion——过滤器)

类型转换、拦截器、数据绑定、异常处理

JavaWeb三大组件(Servlet、Filter、Listener)

Servlet,Listener,Filter
Servlet是用来处理客户端请求的动态资源,也就是当我们在浏览器中键入一个地址回车跳转后,请求就会被发送到对应的Servlet上进行处理。
filter与servlet在很多的方面极其相似,但是也有不同,例如filter和servlet一样都又三个生命周期方法,同时他们在web.xml中的配置文件也是差不多的、 但是servlet主要负责处理请求,而filter主要负责拦截请求,和放行。

 

springIoC(控制反转)
将对象的创建交给Spring来控制,通过反射和注解[也有xml配置的方式]
控制权有调用者转移到Spring容器,控制权发生了反转。
 以前jsp时,对象便我们自己创建的,它是什么管理,什么时候销毁
servlet什么时候销毁
第一次请求时启动,Tomcat关闭时销毁
private UserService userService=new UserServiceImpl() (多次请求会出现多例)

后面使用spring的自动注入,spring bean对象(单例),这时是由我们spring Ioc容器来管理这个对象

AOP是什么?怎么用?应用场景有哪些?
(面向切面编程,切入点 主要应用方法功能增强[日志,权限、性能监控等等)
同时还要深入理解面向对象编程,面向接口编程。Java的特性
从方法等层面切入编程,一般用注解实现,应用场景:日志、权限、监控、swagger 2接口文档

什么是事务?
事务是一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败。
事务回滚:出现异常
事务特性(ACID):
原子性 :强调事务的不可分割.(针对操作)
一致性 :事务的执行的前后数据的完整性保持一致.(针对数据)
隔离性 :一个事务执行的过程中,不应该受到其他事务的干扰
持久性 :事务一旦结束,数据就持久到数据库

mybatis和mybatis Plus 关系或者区别?
增强
mybatis-plus是mybatis的基础上做了增强,只做增强,不做修改【注意jar包不一样,不要乱引用,如果你application.yml中配置 mybatis-plus,那你必须引用的是mybatis-plus的jar,否则连mybatis都没有】

根据id查询好,有索引和id是唯一性

Spring Boot中的yaml的基本语法与配置

1. yaml概念可读性高,用来表达数据序列化的格式,后缀:.yml(或者yaml

如果application.ymlapplication.yamlapplication.properties并行存在,优先级是后加载的,替换先加载的。

一般配置文件都是application-*.yml,有时有多个环境,比如有开发环境application-dev.yml、测试环境、生产环境

2. 基本语法:

  1. 大小写敏感(key:value,key名没关系具体看框架和使用场景)
  2. 使用缩进表示层级关系
  3. 缩进不允许使用tab,只允许空格
  4. 缩进的空格数不重要,只要相同层级的元素左对齐即可
  5. '#'表示注释

写法 : K: (空格)V , 表示一对键值对,空格是必须的

支持的值:

  1. 字面量:普通的值,数字、字符串、布尔

name: admin

  1. 对象: 属性和值

# 注释,普通写法
User:
 
lastName: tian
 
age: 20
# 行内写法,一行解决
User: {lastName: tian, age: 20}

  1. map: 键值对

#普通写法
name: tian
age: 12

  1. 数组: list set

#普通写法
person:
  - student
  - boss
  - teacher

#行内写法
 
person:[student, boss, teacher]

3. Spring Boot 的yml文件配置

(1)配置服务器端口号

# 服务器端口
server:
 
port: 81

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

愿景:成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

 logback日志配置

日志用途:记录项目运行的问题

选择一个好的日志框架?

市面上的日志框架:JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…

左边选一个门面(抽象层)、右边来选一个实现;

日志门面: SLF4J;

日志实现:Logback;

SpringBoot:底层是Spring框架,Spring框架默认是用JCL;

SpringBoot选用 SLF4jlogback

(1)Springboot默认使用的日志框架是Logback, spring-boot-starter依赖包含了 spring-boot-starter-logging。

(2)日志输出级别程序运行输出的信息级别,从严重错误详细输出信息的分级)

从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL

日志输出级别

ERROR 为严重错误 主要是程序的错误

WARN 为一般警告,比如session丢失

INFO 为一般要显示的信息,比如登录登出

DEBUG 为程序的调试信息

TRACE 级别最小,打印信息最为详细

设置日志级别越低,打印的信息越详细,能够将日志级别高的打印出来,如果设置日志级别高,不能打印日志级别低的信息

如果你是开发测试,你可以设置为debug,或者要更详细一点可以设置为trace。

Swagger:再也不用写API文档了

(1)通过Swagger实时生成api文档,这个时候你就不需要手动写接口文档

为什么要接口文档?

主要:前端开发人员,还有测试人员

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值