Spring基础

    技术2023-10-04  83

    什么是IOC

    控制反转,把对象的创建和对象之间的调用过程,交给Spring管理使用IOC的目的:降低耦合度常用的Component及Autowired等注解其实就是IOC的注解实现方式。IOC基于IOC容器完成,实质上就是对象工厂(对象容器)。

    底层原理:

    xml解析、工厂模式、反射

    IOC容器的两种实现方法(两个接口):

    BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供给开发人员使用,加载配置文件时不会创建对象,在获取对象(使用)采取创建对象。ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用,加载配置文件时就会把在配置文件对象进行创建。

    IOC管理Bean

    1.什么是Bean管理

    2.Bean管理操作的两种方法

    基于xml配置文件:set注入、构造方法注入、注解注入基于注解:Component,Controller,service,autowired

    3. Bean的作用域:

    在spring中,设置创建bean实例是单实例还是多实例默认创建的是多实例通过scope注解设置: 1. singletion表示单实例,在加载配置文件时创建单例对象 2. prototype表示多实例,在加载时不创建,在每次调用时创建对象 3. request:一次请求 4. session:一次会话

    4. Bean生命周期

    生命周期:从对象创建到销毁的过程。 xml配置:

    通过构造器创建bean实例(无参构造)为bean的属性设置值和对其他bean引用(调用set方法)调用bean的初始化方法(需要进行配置初始化的方法)bean可以使用了(对象获取到了)当容器关闭时,调用bean的销毁方法(需要进行配置销毁的方法)

    注解方式:项目启动时,扫描指定包下包含Component及其相关注解的类,创建对象;项目关闭时销毁

    5.注解创建Bean对象

    在xml文件中配置包扫描

    ComponentServiceControllerRepository

    上面四个注解功能相同

    6.基于注解实现属性注入

    Autowired:根据属性类型进行自动装配Qualifier:根据属性名称进行注入,如果一个接口有多个实现类,可以通过此方法指定名称进行注入,需要配合Autowired一起使用Resource:可以根据属性名称,也可以根据属性类型。根据属性注入和Autowired一样使用,根据名称注入使用name指定注入名称。value:普通属性注入,上面三个都是对象属性注入。

    7.完全注解开发

    AOP

    1.概念

    面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。通俗描述:不通过修改源代码方式,在主干功能里添加新功能。

    2.实现方式

    使用动态代理方式。 分为两种情况:

    实现了接口:使用JDK动态代理,创建接口实现类实现没有实现接口:使用Cglib代理,创建类的子类实现

    参考动态代理

    3.AOP术语

    连接点:类里面哪些方法可以被增强,这些方法称为连接点切入点:实际被增强的方法,称为切入点增强(通知):实际增强的逻辑的部分,包括前置通知、后置通知、环绕通知、异常通知、最终通知切面:把通知应用到切入点的过程

    4.切入点表达式:

    5.有多个增强类对同一个方法进行增强,设置增强类的优先级

    在增强类上添加Order(数字类型)注解,数字越小优先级越高

    事务

    事务操作(声明式事务管理参数配置)

    在service类或方法上添加Transactional注解,在这个注解上可以配置事务相关参数

    propagation:事务传播行为(一个有事务方法 调用另一个有事务或者没事务的方法)

    ioslation:事务隔离级别

    事务有特性称为隔离性,多十五操作之间不会产生影响,不考虑隔离性产生很多问题:脏读、不可重复读、虚(幻)读脏读:一个事务读取到另一个未提交事务的数据不可重复度:一个未提交事务读取到另一提交事务修改数据虚读:一个未提交事务读取到另一提交事务添加数据事务隔离级别

    timeout:超时时间:事务在一定时间内进行提交,如果没有提交就会回滚,默认-1不超时

    readOnly:是否只读

    读:查询,写:增删改默认false,即可读可写

    rollbackFor:回滚

    设置出现哪些异常进行事务回滚

    noRollbackFor:不回滚

    设置哪些异常不进行事务回滚
    Processed: 0.046, SQL: 9