spring框架-概述(spring特性、生命周期)(一)

Spring是一个轻量级的J2EE框架,专注于bean的管理。其重要特性包括IOC(控制反转)和DI(依赖注入),以及AOP(面向切面编程)。IOC通过第三方容器控制对象的创建和管理,DI则是实现对象间的依赖关系解耦。AOP用于日志、权限和事务管理等非业务逻辑。Spring还涉及Bean的生命周期,包括实例化、初始化、使用和销毁。此外,BeanFactory和FactoryBean在Spring容器中有不同角色,前者是容器,后者是生成特定类型Bean的特殊Bean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是spring

Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器 ,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架

spring重要特性

IOC:
(Inverse of Control ):一种思想 (容器帮我们创建对象并且管理和控制 )
反转后不再由自己本身的对象进行控制这个内置对象的创建,而是由第三方系统去控制这个内置对象的创建。简单来说就是把本来在类内部控制的对象,反转到类外部进行创建后注入,不在由类本身镜像控制,这就是IOC的本质

DI(Dependency Injection): 一种行为:意思是自身对象中的内置对象是通过注入的方式进行创建
实现DI:依赖注入可以通过setter方法注入(设值注入)、构造器注入和接口注入三种方式来实现,Spring支持setter注入和构造器注入,通常使用构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入式更好的选择,setter注入需要类提供无参构造器或者无参的静态工厂方法来创建对象
ioc与aop的关系:ioc就是一种思想,可以理解为容器,di就是注入这一行为,那么di确实就是ioc的具体功能的实现。而ioc则是di发挥的平台和空间。所以说。ioc和di即是相辅相成的拍档。他们都是为了实现解耦而服务的

AOP:面向切面编程 ,与业务逻辑无关的代码 日志、权限控制、事务管理 业务扩展,通过消息前置、后置跟业务无关的代码完成具体的功能
底层通过动态代理的方式进行实现,分为JDK代理与CGlib代理
动态代理是在你原有的功能基础之上,对功能进行增强的一种实现手段。通过动态代理,并且符合开闭原则的前提增强方法的功能。这也是AOP的思想,通过不修改原有代码,把你的代码织入到指定的方法中。
两种代理方式JDK代理与CGLib代理:
JDK代理的接口,而CGLib代理的类

spring生命周期

准备工作
先获取对象的信息(主要通过xml文件或注解的方式),放入BeanDefiniton(存储的为Bean的属性、是否单例、名称、构造方法等信息)
1.实例化
 将放入BeanDefiniton中的信息通过反射的形式进行创建对象(相当于在内存中开辟地址)存入map集合
2.初始化
将实例化后的对象进行属性赋值
自定义属性赋值:populateBean()
容器对象属性赋值:invokeAwareMethods()
在初始化的过程中有增强器的内容,:(目的是对对象进行扩展):使用BeanProcessor 进行扩展

在这里插入图片描述
前置处理方法与后置处理方法
前置处理器:BeanFactoryPostProcessor
在Bean对象实例化前,Spring会调用BeanFactoryPostProcessor接口的postProcessBeanFactory。
作用:
在这个阶段,spring刚刚完成了所有配置类的解析,完整的将所有的配置类转换成了对应的BeanDefinition。但是尚且没有完成Bean的实例化。在这个阶段,程序员可以对这些BeanDefiniton进行二次修改。

后置处理器
实现AOP

3.使用
通过getBean方法进行获取
4.销毁
1.判断是否实现了DispoableBean接口
2.调用destroyMethod方法

知识扩展

BeanFacotroy与FactoryBean的区别?

BeanFactory是spring的容器中的Bean工厂,Bean的创建,获取都是它来完成的,也就是说BeanFactory就是spring的容器,里面放入了所有的Bean,包括单例Bean,原型的Bean定义,也就是BeanDefinition,而BeanFactory中可以放入不同类型的Bean,(流水线)

而FactoryBean也是一种Bean,FactoryBean是BeanFactory的一种Bean,是一种特殊的Bean,FactoryBean中是只能放入一种类型的Bean。(私人定制)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值