spring知识点笔记(更新中)

spring使用过程发生了什么

在使用spring的时候我们可以写一个xml文件然后通过xml文件来获取bean
在这里插入图片描述
在找个过程中都发生了什么?

在这里插入图片描述
这两行 spring加载了xml文件 然后解析xml文件 再把它封装 实例化 然后放到容器中
在这里插入图片描述
这两行就比较简单了 从容器中获取对象 然后使用对象方法

容器内部应该是什么样的结构

我们获取实例是通过getbean 指定名称获取对象的
所以肯定是key-value的结构
在这里插入图片描述
BeanDfinition是对象定义信息
在这里插入图片描述
比如说这些就是它的对象定义信息
在这里插入图片描述
可以看到这里面有很多的get方法
Java是一门面向对象的语言 我们需要把信息给放到一个对象里面我们才能方便的得到 BeanDfinition就是来储存xml里面bean的定义信息的

IOC

ioc里面有很多的bean对象
在这里插入图片描述
但是我们的bean都是定义在xml里面的(也可以在properties或者yml等配置文件里面)
我们的bean信息要读取需要有一个东西去解析它 然后把它放在ioc容器里面
假如说我们用json写了配置文件 但是spring没有解析的工具我们可以实现BeanDefinitionReader这个接口去手动解析

在这里插入图片描述

关于BeanDefinitionReader

在这里插入图片描述
它有这么多的实现
在这里插入图片描述
如果是xml文件可以用在这里插入图片描述
如果是properties可以用在这里插入图片描述
它有这末多的方法
在这里插入图片描述

spring bean的scope属性

在这里插入图片描述
singleton是单例的(默认情况)
prototype是需要时创建新的

beanDefinition

在这里插入图片描述
获取完bean的信息之后就要实例化了
反射我们可以得到对象的所有信息(属性,注解,方法) 更加灵活
如果用new的话就非常死板了

反射如何实例化

在这里插入图片描述
获取class对象
然后获取构造方法
然后再newInstance()

BeanFactory

在这里插入图片描述
再实例化的过程中我们有可能对从beanDefinition里面读取的信息进行一个修改 比如
在这里插入图片描述

所以不能直接通过beanDefinition来实例化
在这里插入图片描述

关于PostProcessor

所谓的增强实际上就是修改
在这里插入图片描述
在这里插入图片描述
可以自己写一个处理器来修改读取的beanDefinition
在这里插入图片描述
下面这些都可以修改读取到的beanDefinition信息
在这里插入图片描述
xiu
在这里插入图片描述
写完之后我们就能再在这里插入图片描述
这里面找到我们的实现类

在这里插入图片描述
定义这个bean
在这里插入图片描述

在这里插入图片描述

实例化和初始化

实例化和初始化是不同的
在这里插入图片描述
执行构造器是属于实例化的过程
实例化在初始化之前
初始化的执行初始化方法我们更多用的是set方法
init-method设置的是我们再执行初始化的时候要求执行的方法 比如
写一个init
在这里插入图片描述
再xml里面指定init方法
在这里插入图片描述
执行了
在这里插入图片描述
实例化到初始化过程
在这里插入图片描述
下面这两个接口都是用来修改bean信息的
在这里插入图片描述
在这里插入图片描述

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

拦截器和过滤器有什么区别

①拦截器是基于java的反射机制的,而过滤器是基于函数回调。
  ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
  ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
  ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
  ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
  ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
  
在这里插入图片描述

过滤器Filter是在请求进入容器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后。
拦截器 Interceptor 是在请求进入servlet后,在进入Controller之前进行预处理的,Controller 中渲染了对应的视图之后请求结束

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值