Spring 第一讲:spring概要

Spring下的IOC容器和DI(依赖注入)

一、什么是spring IOC

IOC(Inversion of Control)即控制反转,在我们以往的编程中如果需要一个bean往往需要去手动去new一个出来。而spring帮我们解决了这个问题,在spring中我们只需要去定义bean,spring就会自动的帮我们实例化并管理Bean。而这些Bean就管理在spring容器中。

IOC容器:就是具有依赖注入功能的容器,是一个可以创建对象的容器。
例:Manager m = new Manager();

IOC主要负责:
1、实例化,定位;
2、配置应用程序的对象及建立这些对象之间的依赖关系;
3、控制反转,是指new实例工作不由程序员来担任,主要由Spring来接管。

DI(依赖注入):在容器创建对象后,处理对象的依赖关系。
依赖注入在Spring中一共有4种方式:
1、set注入方式(常用)
2、静态工厂的注入方式
3、构造方法的注入(常用)
4、基于注解的注入(常用)

二、什么是AOP

AOP面向切面spring事务管理,对任何一个层级进行干预

起名方式
错误(易重复):www.baidu.com
正确(不重复):com.baidu.xxxx

在正常企业内书写代码要主要的事项
Sql:
尽量不要使用通配符的方式去书写代码。
第一:安全问题,防止黑客使用sql注入的方式来进行攻击;(安全)
第二:为了程序能够最大速度的运行;(速度快)

事务是用来做什么的?

主要是对数据库进行事务管理,spring的事务主要是用来管理spring所加载的ORM(Hibernate、Mybatis、MybatisPlus……)框架。

1、@Transactional(这里是对事务的一些描述属性)标识
2、spring在启动的时候会去解析生成bean,这个过程中会检测拥有相关注解的类和方法。同时给带有此事务的类或者方法生成相应的代理。

关于@Transactional的注解属性都有

  • value: 可选的限定描述符,制定使用的事务管理器;
  • Propagtion:可选的事务传播行为设置;
  • isolation:可选的事务隔离级别设置;
  • readOnly:读写或只读事务;
  • timeout:事务超时时间设置(单位:ms);
  • rollbackFor :导致事务回滚的异常类名字数组
  • oRollbackFor:不会导致事务回滚
  • noRollbackForClassName:不会导致事务回滚的异常类名字数组。

Propagtion 各属性值的含义

  • propagtion = REQUIRED 如果有事务,那么加入事务,没有的话新创建一个事务
  • propagtion = NOT_SUPPORTED:这个方法不开启事务;
  • propagtion = REQUIREDDS_NEW:不管是否有事务的存在,都创建一个新的事务来执行,原来的事务挂起,
  • propagtion = MANDATORY:必须在一个已有事务中执行;
  • propagtion = NEVER:不能在一个事务中执行,就是当前必须没有事务,否则抛出异常;
  • propagtion = SUPPORTS:当前存在事务,则在事务中运行,否则以非事务形态进行运行;
  • propagtion = NESTED:若有当前存在事务,则在运行一个嵌套的事务,如果当前没有事务,则按照REQUIRED 的方式来运行;

Isolation:各属性值的含义

  • TransactionDefinition.ISOLATION_DEFAULT:这是默认值,表示使用底层数据库的默认隔离级别。

  • TransactionDefinition.ISOLATION_READ_UNCOMMITTED:该隔离级别表示一个事务可以读取另一个事务修改但没有提交的数据,该级别不能防止脏读数据,不可重复读和幻读,因此很少使用该隔离级别。

  • TransactionDefinition.ISOLATION_READ_COMMITTED:该隔离级别表示一个事务只能读取另一个事务已经提交的数据,该级别可以防止脏读 ,这也是大多数情况下的推荐属性。(经常使用到的属性)

  • TransactionDefinition.ISOLATION_REPEATABLE_READ:该事物隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同,该级别可以防止脏读 和不可重复读。

  • TransactionDefinition.ISLATION_SERIAIIABLE:所有的事务一次逐个执行,这样事务之间就完全不可能进行干扰,也就是说,该级别可以防止脏读 不可重复读及幻读 但是这将影响到程序的运行性能,通常情况下也会用到该级别。

名词解释

  • (提前)脏读:当事务读取还未被提交的数据时,就会发生这种事件。
    例:徐同学在北京,修改了一条数据,(未提交), 旭同学长春查到了;
  • (延后)幻读:就是读取到了历史数据,即使此数据已经被修改了,那么也会读到被修改前的这条数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值