java interview

1、Springboot主启动类加载过程

元注解:主启动类相当于一个大的配置文件,其中可以加载其他小的配置文件。

@springbootConfiguration -> @configuration :springboot 在内部加载很多第三方的依赖,但是某几个过滤器执行时会影响程序的运行,需要采用取非的方式排除在外
@enableAutoConfiguration->@autoconfigurationpackage/import(autoconfigurationimportselector.class) springboot在内部有多个选择器。当springboot启动时 依次加载选择器,当加载的选择器和pom.xml 中匹配时,则自动配置程序开始运行

@componentScan() 包扫描:动态的获取当前启动类所在的包路径,以该路径作为包扫描的路径。
在这里插入图片描述

2、springboot加载机制

开箱即用原则:springboot官网已经将主流的框架进行整合,用户使用时无需多余的配置,拿来就用

3、springmvc 运行原理

dispatcherServlet 前端控制器 实现请求的流转。
handlerMapping 处理器映射器 实现了请求路径方法之间的映射
handlerAdapter 处理器适配器 针对不同的用户请求,请求不同的处理器完成任务
ViewReslover 视图解析器 实现页面路径的拼接

在这里插入图片描述
简单描述:
客户端请求发送->前端控制器dispatcherservlet 接受客户端的请求 -> 找到处理器映射HandlerMapping 解析请求对应的handler -> handleAdapter 会根据handler 来调用真正的处理器来处理请求,并处理相应的业务逻辑 -> 处理器返回一个模型视图 modelandview -> 视图解析器进行解析 -> 返回一个视图对象 -> 前端控制器dispatcherservlet 渲染数据(moder) -> 将得到的视图对象返回给用户。

具体的描述

1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet 收到用户请求调用 handlerMapper 处理器映射器。
3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet
4、DispatcherServlet 调用 HandlerAdapter 处理器适配器。
5、 HanderAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器)
6、controller 执行完成返回modelandview
7、handlerAdapter 将controller 执行结果modelandview 返回给DispatcherServlet
8、DispatcherServlet 将modelandview 传给 viewReslover 视图解析器
9、viewReslover 解析后返回具体的view
10、DispatcherServlet 根据 view 进行渲染视图 (即将模型数据填充至视图中)
11、 DispatcherServlet 响应用户

4、vue的生命周期

在这里插入图片描述
Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编辑模板、挂载Dom、渲染->更新->渲染、销毁等一系列过程,这就是Vue的生命周期。通俗来说vue实例就是从创建到销毁的过程。

beforeCreate 创建Vue 之前
Created 创建实例成功(一般在这里实现数据的异步请求)
beforeMount 渲染Dom 之前(加载组件第一次渲染)
mounted 渲染Dom 完成(加载组件第一次渲染)
beforeUpdate 重新渲染之前(数据更新等操作控制Dom 重新渲染)
updated 重新渲染完成
beforeDestroy 销毁之前
destroyed 销毁完成

5、vue的常用指令

  1. v-text : 用于更新标签包含的文本
  2. v-html : 绑定一些包含html 代码的数据在视图上
  3. v- show : 指令的取值为true/false ,分别对应着显示/隐藏。
  4. v - if :取值为true/false, 控制元素是否需要渲染
  5. v - else : 和v-if 指令搭配使用
  6. v - for : 循环遍历数据,实现数据渲染
  7. v - bind : 用于动态绑定 dom 元素的属性
  8. v- on : 可以绑定时间的监听。 通过v-on 指令 修饰click 点击事件。
  9. v - model : 实现数据的双向绑定。
  10. v - once : 只渲染一次, 后面的元素中的数据再更新变化 ,都不会重新渲染。

6、spring中bean的作用域

在spring中,那些组成应用程序的主体及由spring ioc 容器所管理的对象,称之为bean.
singleton : 再springioc 容器中仅存在一个bean 实例,bean 以单例方式存在,默认值
prototype: 每次从容器中调用bean 时,都会返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean()
request: 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境。
session 同一个Http Session 共享一个Bean, 不同Session 使用不同Bean ,仅适用于webApplicationContext环境。

几种作用域中,request、session作用域仅在基于web的应用中使用,只能用在基于web的Spring ApplicationContext 环境。

7、spring 自动装配

spring的自动装配(autowired)
1、组件扫描(component scanning):spring 会自动发现应用上下文中所创建的bean
2、自动装配(autowired):spring自动满足bean 之间的依赖,也就是我们说的Ioc/DI

8、Aop在spring中的作用

**提供声明式事务;允许用户自定义切面**
		横切关注点:跨越应用程序多个模块的方法或功能。
		切面(aspect): 横切关注点 被模块化 的特殊对象。 即,它是一个类。
		通知(advice):切面必须要完成的工作
		目标(target): 被通知的对象
		代理(Proxy): 向目标对象应用通知之后创建的对象
		切入点:(pointcut):切面通知 执行的  地点 定义
		连接点(jointpoint): 与切入点匹配的执行点
	**springAop中支持5种类型的advice:**
	前置通知、后置通知、环绕通知、异常抛出通知、引介通知

9、事务

事务的四个属性:
1、原子性 :事务是原子性操作,事务的原子性确保动作要么全部完成,要么全部不起作用。
2、一致性:一旦所有的事务动作完成,事务就要被提交。
3、隔离性: 可能多个事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
4、持久性: 事务一旦完成,无论系统发生什么,结果都不会受到影响。这种情况下,事务的结果被写到持久化存储器种。

10、request 中getParameter 和 getAttribute 的区别

getParameter() 方法: 该方法用于客户端通过get或者post方法传递过来的参数,它的返回值是字符串类型 
	这里强调的是**客户端请求**,是客户端发送给服务器的参数,这个赋值的过程是有客户端完成的。
	
 getAttribute()方法: 该方法获取request 对象中的attribute 值, 这个值是之前在服务端才放入到request 对象里的,即通过setAttribute(key,value)放入request。 这里强调的是attribute 中的值是在**服务端**赋予的,而非客户端传过来的。
 
getParameter() 和 getAttribute()最简单的两个区别:
	1)赋值方式不一样,前者是客户端将请求参数值送给服务端,而后者则是请求到达服务端之后,在服务端进行存放进去
	2)两者的返回值类型不一样,前者永远返回字符串,后者返回任意对象。

11、 重定向(redirect)和转发(forward)

**servlet 中实现页面的跳转有两种:转发和重定向**

请添加图片描述

请添加图片描述

redirect : 客户端请求 .。redirect 方式相当于 “response.sendRedirect()”,转发后的浏览器的地址栏变为转发后的地址栏,因为转发即执行一个新的response 和 request。

forward : 服务端请求 / 由服务端进行页面的跳转.forward 相当于
“request.getRequestDispatcher().forward(request,response)”,转发后的浏览器地址栏还是原来的地址。转发并没有执行新的request和response,而是和转发前的请求共用一个request 和 response. 所以转发前的请求参数在转发后仍然可以读取到。

如果要保留请求域中的数据,使用转发,否则使用重定向。
以后访问数据库,增删改使用重定向,查询使用转发。

12、session和cookie

Cookie 是由服务端创建 但在客户端存储会话状态的一个对象。此对象分为两种:一种是会话cookie ,一种是持久cookie.**浏览器在访问某个域名时会携带这个域的有效cookie 到服务端**
	会话cookie: 浏览器会话关闭时,生命周期结束。
	持久cookie : 在cookie 对象创建时指定了生命周期。

session 技术是由服务端创建,并在服务端存储会话状态的一个对象,当session 对象创建时,还会创建一个会话cookie ,并且通过cookie 将sessionId 写到服务端, 客户端下次访问服务端会携带这个会话cookie ,通过Jsession 找到session 对象,进而会去session 对象中存储数据

请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值