Spring相关

  • Spring
    • IOC
      • IOC是什么
      • IOC容器的初始化过程
      • 依赖注入的实现方式
      • 依赖注入的相关注解
      • 依赖注入的过程
      • Bean的生命周期
    • Bean的作用域
    • AOP
      • AOP是什么
  • 资料

Spring

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

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基础

【日积月累】Spring相关推荐

  1. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day16】—— Spring框架2

      大家好,我是陈哈哈,北漂五年.认识我的朋友们知道,我是非科班出身,半路出家,大学也很差!这种背景来北漂,你都不知道你会经历什么

  2. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day15】—— Spring框架1

      大家好,我是陈哈哈,北漂五年.认识我的朋友们知道,我是非科班出身,半路出家,大学也很差!这种背景来北漂,你都不知道你会经历什么

  3. 【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战

    一.写在前面   相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这是非常火的一门技术. 如果只是用户量很少的传统IT系统,使用Spring Cloud可能还暴露不出 ...

  4. 每秒上万并发下的Spring Cloud参数优化实战

    本文来源:石杉的架构笔记(shishan100) 一.写在前面 相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这是非常火的一门技术. 如果只是用户量很少的传统IT系 ...

  5. 使用阿里云ACM简化你的Spring Cloud微服务环境配置管理

    摘要: 本文我们就如何使用阿里云ACM这样的配置管理产品在Spring Cloud中替代Spring Cloud Config帮助简化环境配置管理做一个简单的示例,帮助你理解基于ACM来简化微服务环境 ...

  6. 使用阿里云ACM简化你的Spring Cloud微服务环境配置管理 1

    摘要: 本文我们就如何使用阿里云ACM这样的配置管理产品在Spring Cloud中替代Spring Cloud Config帮助简化环境配置管理做一个简单的示例,帮助你理解基于ACM来简化微服务环境 ...

  7. 深入理解Spring系列之一:开篇

    转载 https://mp.weixin.qq.com/s?__biz=MzI0NjUxNTY5Nw==&mid=2247483810&idx=1&sn=a2df14fdb63 ...

  8. 如何用ACM简化你的Spring Cloud微服务环境配置管理

    摘要: 本文我们就如何使用阿里云ACM这样的配置管理产品在Spring Cloud中替代Spring Cloud Config帮助简化环境配置管理做一个简单的示例,帮助你理解基于ACM来简化微服务环境 ...

  9. Java岗大厂面试百日冲刺【Day46】— Linux2 (日积月累,每日三题)

      大家好,我是陈哈哈,北漂五年.相信大家和我一样,都有一个大厂梦,作为一名资深Java选手,深知面试重要性,接下来我准备用100天时间,基于Java岗面试中的高频面试题,以每日3题的形式,带你过一遍 ...

最新文章

  1. 一文了解5G是什么,将如何影响我们的未来
  2. C#操作XML小结_转载
  3. Java设计模式GOF之6大设计原则
  4. 深入分析 Javascript 单线程
  5. 演讲者模式投影到幕布也看到备注_家用投影幕布怎么选?(看这一篇就明白了)...
  6. 云服务器安装操作系统后如何连接,服务器如何安装操作系统
  7. perl统计http日志ip
  8. 目的网络、子网掩码、下一跳例子
  9. css固定定位的代码,CSS——相对定位、绝对定位、固定定位(示例代码)
  10. HTML5-简易Canvas绘图板
  11. 浏览器的邮件html编辑器无效,eWebEditor 辑器按钮失效 IE8下eWebEditor编辑器无法使用的解决方法...
  12. 微信公众号文章音视频下载的几种办法-涵盖PC端和手机端
  13. 大厂程序员都会的分布式RPC框架,直接无私打包分享,手慢无
  14. 鸿蒙系统分享,鸿蒙系统的启动流程学习分享
  15. Web 开发框架 — Express 精讲(安装使用、静态托管、路由处理、中间件的使用)
  16. php导入excel先检查,php 如何在导入Excel数据时检查Mysql数据库内容是否存在,避免重复录入?:怎么样筛选excel表格重复的数据库...
  17. 哈工大计算机考研 跨考,2011年哈工大计算机考研经验_跨考网
  18. 定义主函数main()
  19. 飞瞳引擎™AI集装箱识别检测检测云服务箱况检测,正常集装箱信息识别率99.98%以上,实时返回识别结果,集装箱信息识别云服务免费
  20. 英国富时100指数_在英国创业或从事第一份自由职业时应了解的财务事项

热门文章

  1. 42 | MySQL Grant赋权限(这篇文章可能没啥你想要的)
  2. 六步实现课程倍速播放
  3. 计算机毕业设计ssm企业财务报销审核系统n8191系统+程序+源码+lw+远程部署
  4. admi后台 vue_vue管理后台
  5. jQuery之动画-滑入、滑出
  6. 单细胞论文记录(part14)--CoSTA: unsupervised convolutional neural network learning for ST analysis
  7. python爬虫常用包使用文档
  8. 电网质量-谐波的基本概念
  9. 案例讲解如何将ER图转化为关系模型
  10. 使用Spine制作柔性的骨骼动画详解