spring

# Spring

## ioc控制反转
指的是常规意义上的由程序直接创建对象改为由容器获取对象
解耦合
方便管理

# aop 切面式编程
aop底层实现:jdk动态代理-针对实现接口的类,cglib动态代理-针对未实现接口的类
aop要达到的效果就是,在保证不修改源码的情况下,对方法进行动态增强
主要作用就是分离业务以及与业务无关的开发任务,包括日志、事务、权限、监控等等
实现方式:
1、引入aspect依赖
2、启动类增加@EnalbeAspectAutoProxy
3、编写切面类,定义切面规则,可以定义包路径、方法返回、入参、生效bean等等
@Before、@After、@AfterReturning、@AfterThrowing、@Around

## spring用到了那些设计模式
单例 bean默认为单例模式
工厂 BeanFactort就是工厂模式的体现
代理 aop切面就是基于代理实现

## spring两个核心接口
### BeanFactory
可以认定为是一个hashMap,key是bean的className,value是具体实现
### ApplicationContext
上下文应用对象,继承BeanFactory,所以前者的功能它都有,而且还提供了读取配置文件,支持国家化功能

## spring bean的作用域
singleton-默认:springioc容器中仅存在一个实例
prototype:每次调用bean就创建一个实例
request:每次request请求创建一个实例
session:每个http session创建一个实例

## spring的ThreadLocal
针对每一个线程独立创建的一个空间,从而隔离了多个线程对数据的访问冲突

## spring事务的实现方式和原理
spring的事务本质上是基于数据库的,若数据库不支持事物,spring也是不可以的

## spring的事务实现方式
声明式事务 通过xml和注解来实现 @Transaction
编程式事务 通过代码编写来实现 TransactionTemplate.execute(业务)

## spring的事务隔离级别
用底层数据看的事务隔离级别
未提交读,最低隔离级别,事务未提交前,就可以被其他事务读取,会出现脏读、幻读、不可重复读
提交读,一个事务提交后才能被其他事务读取到,会出现幻读、不可重复读
可重复读,保证事务过程中,某个值和事务开始的时候读取到的值是一致的,可能出现幻读,mysql的默认隔离级别
序列化,级别最高,很少用

脏读:一个事务可能读取到其他事务未提交的数据
不可重复读:一个事务中,多次读取一个值,出现的结果不一样
幻读:一个事务中,读取到的数量产生变化,好像出现幻觉

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值