【日积月累】Spring

Spring

Spring 是个 java 企业级应用的开源开发框架。Spring 主要用来开发 Java 应用,
但是有些扩展是针对构建 J2EE 平台的 web 应用。Spring 框架目标是简化 Java
企业级应用开发,并通过 POJO 为基础的编程模型促进良好的编程习惯。

![在这里插入图片描述](https://img-blog.csdnimg.cn/178558ca0a034cf2bf642daf120bb13e.png

IOC

IOC是什么

IOC控制反转是指将原来需要程序员来进行的对象创建,对象属性赋值(依赖)的控制权反转给IOC容器来实现,并且管理这些对象的整个生命周期。需要创建一个容器并且让容器知道创建对象之间的关系,在Spring当中就是通过IOC容器来实现的。
IOC的实现方式有依赖注入与依赖查找,依赖查找用的比较少。
依赖注入是指对象被动的接受依赖类而不用自己去查找,对象不是从容器中查找他依赖的类,而是在对象实例化时主动将它依赖的类注入给它。

IOC容器的初始化过程

IOC的初始化是通过refresh()方法来启动的,并使用不同的模块来完成,ResourceLoader,BeanDefinition等,主要包过三个过程,每个过程又通过调用不同的接口来完成

Resource定位过程:
Resuorce定位是指beanDefinition的资源定位,由ResourceLoader通过统一的Resource接口来完成,这个Resource对各种形式的beanDefinition都提供了统一的接口,类似于容器寻找数据的过程。

BeanDefinition的载入:
BeanDefinition的载入过程是指将用户定义好的Bean表示为容器内部的数据结构,也就是BeanDefinition。java对象在容器中的抽象就是BeanDefinition。

向容器注入BeanDefinition
向容器注入BeanDefinition这个过程示通过BeanDefinitionRegistry接口来完成的,就是将载入过程中的BeanDefinition来向IOC容器注册。

依赖注入的实现方式

有三种方式 构造方法注入 setter方法注入 接口注入

依赖注入的相关注解

@AutoWired:自动按类型注入,有多个匹配则按照指定Bean的id查找,找不到会报错;
@Qualifier 在自动按类型注入的基础上再按照Bean的id查找,给变量注入必须搭配@Autowired,如果是方法则不用;
@Bean 直接按照Bean的id注入,只能注入Bean;
@Value 用于注入基本数据类型和String类型。

依赖注入的过程

Bean的生命周期

Bean生命周期主要有四个阶段 实例化 属性赋值 初始化 销毁

实例化:
Bean的实例化有两种情况 BeanFactory在使用Bean时才会实例化Bean,ApplicationContext管理的Bean在容器初始化时就会完成Bean的初始化,默认Bean是单例(sinlgeton);
属性赋值:
为Bean设置相关属性和依赖(依赖注入)
△△△初始化:
在初始化前需要 检查Aware的相关接口并设置相关依赖 ,使用BeanPostProcessor进行前置处理,然后进行初始化,初始化完成后,要再使用BeanPostProssor进行后置处理。
销毁:
首先需要先注册Destruction相关回调接口,要销毁的时候有两种方法,如果Bean实现了DisposableBean接口,则spring将调用destory()方法,如果Bean是用来destory-method 属性声明了销毁方法,则该方法被调用。

tips:
Spring的依赖注入最大亮点就是所有的Bean对Spring容器的存在是没有意识的。但是在实际项目中,我们有时不可避免的要用到Spring容器本身提供的资源,这时候要让 Bean主动意识到Spring容器的存在,才能调用Spring所提供的资源,这就是Spring的Aware接口,Aware接口是个标记接口,标记这一类接口是用来“感知”属性的,Aware的众多子接口则是表征了具体要“感知”什么属性
在这里插入图片描述

Bean的作用域

目前Bean的作用域有五种

在这里插入图片描述

这里是引用

AOP

AOP是什么

AOP面向切面编程,就是将代码中重复的部分抽离,在需要调用的时候通过JDK动态代理技术,在不修改源码的基础上对方法进行增强。

资料

面试必问的Spring IoC与Spring AOP面试题,你能get到几问?

Java知识复习(八)Spring基础

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顶子哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值