spring面试准备

1. 什么是spring:
 	1. 是个容器,也是个轻量级的javaEE开发应用框架,
 	2. 核心功能是ioc合aop
2. 什么是ioc:
	Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,
	并且管理这些对象的整个生命周期。
	控制反转,对象与对象之间的关系不再由传统的方式管理,而是通过spring进行管理
	
	DI(依赖注入)是他的一个实现。
	ioc原理: 通过反射+dom4j解决依赖, 
	
	最顶层是BeanFactory接口,起一个约束作用,同时定义了很多方式。
	ApplicationContext:是spring的核心配置接口,整个项目运行都依赖于它。管理bean。
	
	源码大概分为几部分: 
	1. 加载并解析配置文件到BeanDefinition中的map中(map<String, BeanDefinition>)
	2. getBean的时候从map中取。
3. aop
	思想:  面向切面编程。
	那些地方用到:日志,事务。
	解决了什么问题:代码重复。
	springAop通知有哪些: 前置、后置、环绕、异常
	步骤
		1. 类上注解@aspect
		2. 方法上加对应的注解(@before,@after,@AfterReTuring,@AfterThrowing)。
			如:@before("execution(* com.kangyu.userDao.add)")。
	内部通过动态代理模式(cglib)来进行处理,
	什么是代理模式: 	需要对一个类进行加强,然后可以通过代理来进行操作。
	代理分为动态代理与静态代理。
	静态代理: 需要生成代理类来实现。
	动态代理: jdK动态代理(反射来实现),cglib动态代理(通过字节码)。
	cglib动态代理: 在运行期间对方法进行增强,依赖于asm包,把被代理对象通过class方式
	加载进来,修改其字节码生成子类。
4. bean的生命周期
 	- >初始化bean 
 	- > bean中的属性赋值
 	- > 调用BeanNameAware中setBeanName方法
 	- > 调用BeanFactoryAware中的setBeanFactory
 	- > 调用ApplicationContextAware中的setApplicationContext
 	- > BeanPostProcessor中的预处理方法 
 	- > InitializingBean的afterPropertiesSet方法 
 	- > 调用自定义的初始化方法(init-method)方法
 	- > BeanPostProcessor的后置方法
 	- > Bean已经加载好了,可以使用了。
 	- > 容器关闭的时候,DisposableBean中的destory方法
 	- > 调用自定义的摧毁方法(init-destory)方法。
5. springMvc流程
	 - > http请求到dispatcherServlet
	 - > 调用处理器映射器(getHandler)(通过反射的方式找到对应的方法)并返回处理器执行链
	 - > 通过处理器执行链找到对应的适配器(执行里面的方法内容)
	 - > 处理器将处理的结构以及跳转的视图封装成modleAndView,并将其返回给适配器。适配器
	 	 返回给dispatcherServlet。
	 - > dispatcherServlet根据modleAndView找到对应的视图解析器
	 - > 返回view页面给客户端。

在这里插入图片描述

6. spring中如何给对象的属性赋值:
 	构造方法,set
7. 事务

事务的作用: 保证数据的一致性

事务原理:获取数据源的Api,Api中封装了提交回滚等。
可以理解为通过环绕通知(事务开始和事务提交)和异常通知(事务回滚)实现的。

事务特性: 原子性(要么都成功要么…),一致性(A用户向B相互转账100,B要增加100),隔离性(事务之间互不影响),持久性(已经存到数据库里去了)。
事务分类:手动事务、xml事务、声明事务。
spring 事务的传播行为,主要有以下七种:
支持当前事务:

1. 如果当前有事务就用当前事务,否则就用自己的。
2. 如果当前有事务就用当前事务,否则就以非事务运行
3. 如果当前有事务就用当前事务,否则就抛出异常

不支持当前事务

1. 如果当前存在事务,用新事务
2. 如果当前存在事务,不用事务
3. 如果当前存在事务,抛出异常

用这个tx:annotation-driven,然后就可以用@transcation了。

8. 依赖注入注释的方法
	主要在配置文件中加入: <context:component-scan>这个注解。 在相应的dao、service加入
	@Repository和@service注解即可。
9. Spring事务隔离级别与Mysql InnoDB事务隔离级别的关系

在这里插入图片描述

10. spring注解Transactional

rollbackFor:
spring默认的回滚类型是UncheckedException(不可检查异常,也就是运行时异常,包括RuntimeException和Error),如果不改,那么当我们抛出Exception(因为是RuntimeException的爸爸)的时候,事务不会进行回滚
https://www.jianshu.com/p/9098372c108a

11. spring回滚事务
  • TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  • throw new RuntimeException()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值