随笔

1.Spring的AOP理解?
AOP,一般称为面向切面,作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用模块,这个模块被命名为“切面(Aspect)”,减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。SpringAOP使用的动态代理实现
2.Spring事务的隔离级别有几种?
spring事务: 什么是事务: 事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败.
事务特性(4种):
原子性 (atomicity):强调事务的不可分割.
一致性 (consistency):事务的执行的前后数据的完整性保持一致.
隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰
持久性(durability) :事务一旦结束,数据就持久到数据库 如果不考虑隔离性引发安全性问题: 脏读 :一个事务读到了另一个事务的未提交的数据
不可重复读 :一个事务读到了另一个事务已经提交的 update 的数据导致多次查询结果不一致.
虚幻读 :一个事务读到了另一个事务已经提交的 insert 的数据导致多次查询结果不一致. 解决读问题:
设置事务隔离级别(5种)
DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
未提交读(read uncommited) :脏读,不可重复读,虚读都有可能发生
已提交读 (read commited):避免脏读。但是不可重复读和虚读有可能发生
可重复读 (repeatable read) :避免脏读和不可重复读.但是虚读有可能发生.
串行化的 (serializable) :避免以上所有读问题.
Mysql 默认:可重复读 Oracle 默认:读已提交 read uncommited:是最低的事务隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。
read commited:保证一个事物提交后才能被另外一个事务读取。另外一个事务不能读取该事物未提交的数据。
repeatable read:这种事务隔离级别可以防止脏读,不可重复读。但是可能会出现幻象读。它除了保证一个事务不能被另外一个事务读取未提交的数据之外还避免了以下情况产生(不可重复读)。
serializable:这是花费最高代价但最可靠的事务隔离级别。
事务被处理为顺序执行。除了防止脏读,不可重复读之外,还避免了幻象读(避免三种)。
事务的传播行为 PROPAGION_XXX :事务的传播行为 * 保证同一个事务中
PROPAGATION_REQUIRED 支持当前事务,如果不存在 就新建一个(默认)
PROPAGATION_SUPPORTS 支持当前事务,如果不存在,就不使用事务
PROPAGATION_MANDATORY 支持当前事务,如果不存在,抛出异常 * 保证没有在同一个事务中
PROPAGATION_REQUIRES_NEW 如果有事务存在,挂起当前事务,创建一个新的事务
PROPAGATION_NOT_SUPPORTED 以非事务方式运行,如果有事务存在,挂起当前事务
PROPAGATION_NEVER 以非事务方式运行,如果有事务存在,抛出异常
PROPAGATION_NESTED 如果当前事务存在,则嵌套事务执行
3.Spring通知有哪些类型?
1).前置通知(Before advice):在某连接点(join point)之前执行的通知,但这个通知不能阻止连接点前的执行(除非它抛出一个异常)
2).后置通知(After returning advice):在某连接点(join point)正常完成后执行的通知:例如,一个方法没有抛出任何异常,正常返回。
3).异常通知(After throwing advice):在方法抛出异常退出时执行的通知。
4).最终通知:(After finally advice):在某连接点退出时候执行的通知(不论是正常返回还是异常退出)
5).环绕通知(Around Advice):包围一个连接点(join point)的通知,如方法调用。这是最强大的一种通知类型。环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或者直接返回它们自己的返回值或抛出异常来结束执行。
4.SpringMvc执行流程
1).用户方法请求至前端控制器DispatcherServlet;
2.DispatcherServlet收到请求后,调用HandleMapping处理器映射器,请求获取Handle;
3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
4.DispatcherServlet调用HandlerAdapter处理器适配器;
5.HandlerAdaper经过适配调用具体处理器(Handel,也叫后端控制器)
6.Handel执行完成返回ModelAndView;
7.HandlerAdaper将Handler执行结果ModelAndView返回给DispatcherServlet;
8.DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;
9.ViewResolver解析后返回具体View;
10.DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)
11.DispatcherServlet响应用户。
5.SpringMvc怎么样设定重定向和转发?
1).转发:在返回值前面加“forward”,譬如“forward:user.do”
2).重定向:在返回值前面加"redirect",譬如“redirect:user.do”
6.SpringMvc常用的注解有哪些?
1.@RequestMapping:用于处理请求url映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。
2.@RequestBody:注解实现接收http请求的json数据,将json转换成java对象。
3.@ResponseBody:注解实现将controller方法返回转化为json对象响应给客户
7.怎么样在springmvc控制器的方法里面得到Request,或者Session?
直接在方法的形参中声明request,SpringMvc就自动把request对象传
8.springmvc中怎么样把ModelMap里面是数据放入Session里面?
可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session的key
9.有哪些不同类型的IOC(依赖注入)方式?
1.构造器依赖注入:构造器依赖注入通过容器除法一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。
2.Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。
10.解释spring支持的几种bean的作用域
single:bean在每个Spring ioc容器中只有一个实例
prototype:一个bean的定义可以有多个实例
request:每次http请求都会创建一个bean,该作用域仅在基于web的SprinApplicationContext情形下有效。
session:在一个Http Session中,一个bean定义对应一个实例。该作用域仅在基于web的SpringApplicationContext情形下有效。
global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作
用域仅在基于web的Spring ApplicationContext情形下有效。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值