什么是Spring或di和ioc区别或Spring ioc原理是什么?或什么是Spring aop或什么是事务

什么是spring

   spring就是把每个bean(实体类)与bean的关系全部交给第三方容器进行管理,那么这个容器就是spring,整个对象的生命周期进行管理的。

spring的核心 ioc(控制反转)、di(依赖注入)、aop(面向切面编程)

di与ioc区别是

di做注入,ioc是创建对象

 

spring ioc原理

①解析xml配置 获取bean class地址

②使用java的反射机制 进行实例化对象

③返回对象

springioc创建对象有哪些方式?

(1)调用无参数构造器=构造函数

(2)带参数构造器

(3)工厂创建对象

      工厂类,静态方法创建对象

      工厂类,非静态方法创建对象

构造函数

工厂

注解

Spring中如何给对象的属性赋值?【DI,依赖注入】

(1)通过构造函数

(2)通过set方法给属性注入值

(3)p名称控件(p标签 通过反射进行set赋值)

(4)自动装配(了解)

(5)注解

set注入原理是什么?

属性必须要有一个set方法

set是注入里面的

 

什么是Spring aop 即 面向切面编程 应用场景? 权限 日志 控制 事务 原理就是aop

提到aop 自然要结合代理设计模式

  静态代理

 动态代理

     jdk动态代理,cglib动态代理

jdk代理和cglib代理区别?

jdk代理(反射)和cglib代理(asm)

springaop cglib动态代理

 

 

spring aop 编程

aop 面向切面编程

       功能:让关注点代码与业务代码分离

关注点,

       重复代码就叫关注点

切面,

      关注点形成的类,就叫切面(类)

切入点,

      执行目标对象方法,动态植入切面代码

        

什么是事务?

      事务就会保证数据的一致性, 事务的特性就是

原子性(不可分割),一致性( 转账 a减 B加),隔离性(互不影响,在并发编程 两个线程同时操作事务),持久性(数据永存在数据库)

 

    事务用法

   ①编程事务(理解成开车手动挡)

   ②声明式事务 

         xml方式 注解方式 

事务的注意点或坑

   事务是程序运行如果没有错误,会自动提交事务,如果程序运行发生异常,则会自动回滚。

    xml方式和注解如果使用了try捕获异常时,一定要在catch里面手动回滚 事务手动回滚代码

    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

 

 

使用@Transaction 注解还得开启事务注解

<!-- 开启事物注解 -->
<tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>

 

 

 

事务的传播  ~~~~~~~~进阶篇

spring的传播行为


ROPAGATION_REQUIRED 如果当前有事物,就用当前的事物,不会新增事物。
ROPAGATION_REQUIRED_NEW 如果当前有事物,不会加入当前事物,会新增事物,

 

事务传播行为类型

说明

PROPAGATION_REQUIRED

如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。

PROPAGATION_SUPPORTS

支持当前事务,如果当前没有事务,就以非事务方式执行。

PROPAGATION_MANDATORY

使用当前的事务,如果当前没有事务,就抛出异常。

PROPAGATION_REQUIRES_NEW

新建事务,如果当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED

以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

PROPAGATION_NEVER

以非事务方式执行,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED

如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类 似的操作。

 

 

 

    

posted @ 2020-01-09 16:25  山河永慕~  阅读(381)  评论(0)    收藏  举报