其他分享
首页 > 其他分享> > Spring——IOC、AOP、事务

Spring——IOC、AOP、事务

作者:互联网

1.IOC

在这里插入图片描述

1.什么是控制反转?

1. 为什么要用 IoC 这种思想呢?

答:解藕。
在这里插入图片描述
在这里插入图片描述

2. 什么是bean?——包装好了的Object

3.Bean的生命周期是什么?

在这里插入图片描述

4.应用上下文什么时候销毁?

实际上refresh执行完成后Spring应用上下文从广义上来说已经启动了,start回调用LifeCycleProcessors的start方法,可以理解refresh处理Spring应用上下文启动需要的东西,start相当于是一个扩展,close和stop是和refresh和close类似的逆向操作。123456

2.IoC容器

1.什么是BeanFactory?

简单粗暴理解为是HashMap:

2.什么是ApplicationContext?

1.它是BeanFactory的子类,他继承了很多的接口,多了很多功能,所以是高级容器
2.他有2个具体的实现子类,用来读取配置文件

3.深入理解IoC?

举例如下:

注意:
public class Rectangle {
    private int width;
    private int length;

    public Rectangle() {
        System.out.println("Hello World!");
    }

    public void setWidth(int widTth) {
        this.width = widTth;
    }

    public void setLength(int length) {
        this.length = length;
    }

    @Override
    public String toString() {
        return "Rectangle{" +
                "width=" + width +
                ", length=" + length +
                '}';
    }
}

4.几个关键问题

1.何为控制?控制的是什么?

2.什么是反转?反转了什么?

5.依赖注入——IoC is also known as DI

1.何为依赖?依赖什么?

程序运行需要依赖外部的资源,来提供程序内对象所需的数据、资源。
比方说:

2.何为注入?注入什么?

配置文件把资源从外部注入到内部,容器加载了外部的文件、对象、数据,然后把这些资源注入给程序内的对象,维护了程序内外对象之间的依赖关系

2.AOP

1.什么是AoP

AOP前后对比

3.Spring的事务传播行为?

1.什么是事务?

ACID特性

2.并发事务导致的问题

在许多事务处理同一个数据时,如果没有采取有效的隔离机制,那么并发处理数据时,会带来一些的问题。

3.Spring的事务传播

事务传播行为:用来描述由某一个事务传播行为修饰的方法,被嵌套进另一个方法时如何传播?

public void methodA(){
    methodB();
 }

 @Transaction(Propagation=XXX)
 public void methodB(){
 }

事务的7种传播行为

在这里插入图片描述

在这里插入图片描述

代码验证

下文的代码以传统三层结构中的两层呈现,即Service层、Dao层,由Spring负责依赖注入注解式事务管理,DAO层由Mybatis实现,数据库使用MySql。

1.首先创建2张表

在这里插入图片描述

2.然后编写相应的Bean和Dao层代码
1.User1的Bean

在这里插入图片描述

2. User1的DAO层

在这里插入图片描述

3.User1的DAO层

在这里插入图片描述

4.User2的Bean

在这里插入图片描述

最后也是具体验证的代码由 service 层实现,下面我们分情况列举。

1.Propagation.REQUIRED

在这里插入图片描述

我们为 User1Service 和 User2Service 相应方法加上Propagation.REQUIRED属性。

在这里插入图片描述

1.1. 场景1——此场景外围方法没有开启事务

在这里插入图片描述
在这里插入图片描述

1.2.场景2

外围方法开启事务,这个是使用率比较高的场景。——一荣俱荣、一损俱损
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.Propagation.NESTED

在这里插入图片描述

我们为 User1Service 和 User2Service 相应方法加上Propagation.NESTED属性。
X

2.1 场景一

此场景外围方法没有开启事务。
在这里插入图片描述
在这里插入图片描述

2.2.场景二——外围方法开启事务。

在这里插入图片描述
在这里插入图片描述

3.Propagation.REQUIRES_NEW

在这里插入图片描述

我们为 User1Service 和 User2Service 相应方法加上Propagation.REQUIRES_NEW属性。
在这里插入图片描述
在这里插入图片描述

3.1.场景1——外围方法没有开启事务

在这里插入图片描述
在这里插入图片描述

3.2. 场景2——外围方法开启事务

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4. 对比以上这3种 REQUIRED、REQUIRES_NEW、NESTED

4.1. REQUIRED、NESTED
4.2. Nested与Requires_News

4.3

REQUIRED,无论内部事务catch与否,内外一定会互相影响
Nested: 可以通过catch做到 内可以不影响外,但是外一定会影响内
Requires_News:内可以通过catch不影响外外一定影响不了内

标签:容器,事务,Spring,Bean,外围,AOP,方法,IOC
来源: https://blog.csdn.net/m0_38057941/article/details/115976121