Spring学习笔记(一)

本文深入探讨了Spring框架的核心概念,包括IOC(控制反转)容器和DI(依赖注入)的概念,阐述了Bean的作用域和生命周期,详细解析了Bean的实例过程。此外,还介绍了BeanFactory与ApplicationContext的区别以及AOP(面向切面编程)的基本原理,包括通知类型和切点等关键要素。

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

目录

一、什么是Spirng框架?

二、什么是IOC(控制反转)容器?什么DI(依赖注入)?

ioc容器

DI(依赖注入)

三、什么是Bean?作用域是什么?生命周期又是什么?

Bean解释

Bean作用域

四、什么叫自动装配?有几种装配方法?

五、Bean的实例过程

六、BeanFactory和ApplicationContext的区别

 七、什么是AOP?

名词解释

常见的通知


一、什么是Spirng框架?

Spring框架为java提供了一个综合的基础性开发支持的平台。包含ioc 容器、数据访问、数据集成、aop、测试等模块。

二、什么是IOC(控制反转)容器?什么DI(依赖注入)?

ioc容器

要理解ioc容器,先要明白什么是ioc,中译为控制反转。

在传统的java开发中,java实例都是由开发人员进行new操作后创建的。但是ioc的概念是将类的实例创建交给spring来进行,容器存放或者会所承载了所有创建好的实例存放的地。

这种将由开发人员控制类的实例化交给spring来完成的操作称为控制反转,将控制权从人的手里交给了spring。简而言之,控制权从开发人员转变为容器,叫控制反转

DI(依赖注入)

依赖注入指有依赖关系的类按照依赖关系放入容器中。这是控制反转的一种实现方式。

依赖注入的方式有三种:构造注入,setter方法注入,接口注入

三、什么是Bean?作用域是什么?生命周期又是什么?

Bean解释

Bean是springIoc容器完成的某个类实例化的对象。

Bean作用域

他的作用域有五种,分别是

  1. singleton:单例,不管怎样,容器中只有一个bean的实例。
  2. prototype:多例,和单利相反,每一次请求都提供一个实例。
  3. request:来自同一个客户端的请求共用一个实例。
  4. session:请求是同一个session共用一个实例。
  5. global-session:类似于 Session作用域,不过它仅仅在基于portlet的web应用中。

 Bean生命周期

四、什么叫自动装配?有几种装配方法?

自动装配时满足bean依赖的一种方法,在应用上下文中为某个声明的变量寻找其依赖的bean。

  1. Spring有五种装配方法,分别为:
  2. no:spring框架的自动装配默认关闭。
  3. byName:根据名称设置依赖关系。
  4. byType:根据类的类型设置依赖关系。
  5. constructor:和byType类似,但是仅适用于有构造器参数相同的bean
  6. autodetect:使用constructor或者byType装配,首先使用constructor,若无相应构造器或者无参构造器,则使用bgType自动装配

五、Bean的实例过程

spring容器将对其管理的全部对象给予统一生命周期处理,管理的对象不在想以前一样(new完使用,随后回收)。过程如下:

  1.  实例化bean对象:采用策略模式,通过反射或者CGLIB动态字节码生成实例或者其子类
  2. 设置对象属性:BeanWarpper接口在框架内部使用,对bean对象操作,可以设置起属性值。
  3. 检查Aware相关接口并设置依赖:完成实例化后且设置属性值和相关依赖后,回检查当前实例是否实现了一系列的以Aware结尾的接口(例如BeanNameAware-将该对象实例的bean定义对应的beanName设置到当前对象实例),若实现,需注入依赖。
  4. BeanPostProcess前置处理:可以通过此对实例进行拓展
  5. 检查是否是InitializingBean以决定是否调用AfterPropertiesSet方法:检查是否实现此接口,若实现,可进一步调整对象实例状态或者信息。
  6. 检车是否配置有自定义的init-method
  7. BeanPostProcess后置处理
  8. 注册必要的destruction相关接口
  9. 使用中
  10. 是否实现DisposableBean接口:DisposableBean和Destroy提供了自定义销毁对象的机会
  11. 是否配置有自定义的Destroy接口

六、BeanFactory和ApplicationContext的区别

BeanFactory是含有bean集合的工厂类,在收到客户端请求时将对应bean实例化,同时生成协作类的关系。此外还包含了bean生命周期的控制,调用客户端的初始化方法(initializing methods)和销毁方法(destruction ethods)

applicationContext和beanFactory具有一样的bean定义、bean关联关系设置。但是他还提供了其他功能:

  1. 支持国际化的文本消息
  2. 统一的资源读取方式
  3. 监听器中注册的bean的时间

 七、什么是AOP?

AOP为Aspect Oriented Programming的缩写,中译为面向切面编程。我们要在业务逻辑上增加的共有功能,如日志、安全、缓存、事务可以用到切面来实现。还常用来日志打印和接口耗时统计。

名词解释

  • 通知(advice): 通过Aop让程序在目标方法执行前执行,或者执行后执行。
  • 切点(pointcut):切点满足我们条件的目标方法。
  • 连接点:连接点可以说是切点的全集。切点是连接点的子集。
  • 切面:切面是切点和通知的组合称谓。 

常见的通知

前置通知:方法执行前调用  对应注解 @Before
后置通知:方法执行后调用  对应注解 @After
返回通知:方法返回后调用  对应注解 @AfterReturning
异常通知:方法出现异常调用 对应注解 @AfterThrowing
环绕通知:自定义调用 对应注解 @Around

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值