Spring 框架详细总结及实例演示

本文深入探讨Spring框架,从核心思想IOC和AOP出发,详细介绍Spring中的Bean管理、依赖注入、事务处理以及生命周期,结合实例展示如何创建和配置Bean,讲解了Spring如何通过动态代理实现AOP,同时分析了Spring事务的隔离级别和传播行为,最后讨论了Spring Bean的完整生命周期。
摘要由CSDN通过智能技术生成

Spring

1.概述

1.1 简介

开源免费的、轻量级的、非侵入式的容器(一个服务器软件,一个框架),类与类之间的管理,帮助开发人员创建对象,管理对象等的一款 Java 开发框架。

针对接口编程,解耦合。

1.2 核心思想

  • IOC(控制反转)
  • AOP(面向切面编程)

思想是上层建筑,不是具体的实现。好比:JVM 中方法区和元空间之间的关系。

1.3 优缺点

1.3.1 优点
  1. 轻量

    Spring 核心功能所需的jar总共3M左右

  2. 针对接口编程,解耦合

    通过 Spring 提供的IOC容器,可以将对象间的依赖关系交由 Spring 控制,避免在代码中通过代码相互使用。

    用户也不必为单例模式类、属性文件解析等底层需求编写代码,可以更专注于上层的应用。

  3. AOP 编程的支持

    通过 Spring 的AOP功能,方便进行面向切面编程,许多不容易用传统 OOP (面向对象编程)实现的功能可以通过AOP轻松实现。

  4. 方便集成各种优秀框架

1.3.2 缺点
  • 框架封装内部复杂
  • 不易精通

2.IOC

2.1 简介

IOC(Inversion of Controller)(控制反转),分为控制和反转两部分。

把对象的创建、赋值、管理工作都交给代码之外的容器实现,也就是对象的创建是其它外部资源完成。

2.1.1 控制

对象的创建、管理、赋值、对象的声明周期和对象之间的关系等权限。

2.1.2 反转
2.1.2.1 正转

开发人员在代码中,使用 new 构造器创建对象,开发人员掌握了对象的创建、属性赋值、对象从开始到销毁的全部过程,开发人员对 对象有全部的控制。

2.1.2.2 反转

开发人员将管理对象的权限转移给代码之外的容器实现。由容器完成对象的管理,只需定义对象。

2.2 Spring 中的 IOC

在 Spring 中 IOC 的思想是通过 DI(依赖注入)实现,DI 底层通过反射机制实现(序列化也可以实现相关功能)。

开发人员只要知道需要使用对象的名称就行,其他的一切交给容器,其他容器内部的实现细节,无需关注。

通过 IOC 减少对代码的改动,也能实现不同的功能,实现业务对象之间的解耦合。例如:能实现service和dao对象之间的解耦合。

2.2.1 依赖

Class A 使用了 Class B 的属性或方法,就称为 A 依赖了 B。

2.2.2 注入

每一个 Bean(类的实例,在 Spring 中称为Bean)的属性都通过容器注入。注入的方式分为构造注入(构造器,显示的在类中进行声明包括无参构造器)、Set 注入(Spring 中通过 Set 进行 Bean 的属性注入)和自动注入

2.2.2.1 自动注入

构造器注入和 Set 注入在 Java 中比较常见,在 Spring 中还有自动注入,可以根据 类的类型或实例的名字进行注入赋值。

  • byName:按名称注入,Java 类中引用类型的属性名和 Spring 容器中 Bean 的【id】一样,
    数据类型一样,将容器中的这个 Bean 赋值给引用类型

  • byType:按类型注入,Java 类中引用类型的是【数据类型】和 Spring 容器中的【class】是同源关系的,
    这样的 Bean 就能赋值给引用类型

    注意:如果出现多个同源,则会注入失败

2.2.2.2 实例演示

通过 Spring 中的配置文件的方式演示。

构造注入

<bean id="xxx" class="xxx">
	<constructor-arg name="xxx" value="xxx"/>
   <!-- index代表构造器中的参数位置 -->
   <constructor-arg index="0/1/2/..." value="xx"/>
</bean>

第一行:

​ id:指定实例的名称,也就是在容器中存在的名字,其他 Bean 通过这个id进行调用,id区分大小写

​ class:实例类的静态类型的全路径

Set 注入

<property name="属性名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值