Spring 原理

        它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。

1 Spring 特点

  • 轻量级
  • 控制反转
  • 面向切面
  • 容器
  • 框架集合

2  Spring 核心组件

3  Spring 常用模块

4   Spring 主要包

5  Spring 常用注解

        bean 注入与装配的的方式有很多种,可以通过 xml,get set 方式,构造函数或者注解等。简单易用的方式就是使用 Spring 的注解了,Spring 提供了大量的注解方式。

6  Spring 第三方结合

 7  Spring IOC 原理

7.1 概念

        Spring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。

7.2 Spring 容器高层视图

        Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的 Bean 配置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上层应用提供准备就绪的运行环境。其中 Bean 缓存池为 HashMap 实现

 7.3 IOC 容器实现

BeanFactory- 框架基础设施
BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;ApplicationContext 面向使用
Spring 框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层
的 BeanFactory。

BeanDefinitionRegistry 注册表
        Spring 配置文件中每一个节点元素在 Spring 容器里都通过一个 BeanDefinition 对象表示,
它描述了 Bean 的配置信息。而 BeanDefinitionRegistry 接口提供了向容器手工注册
BeanDefinition 对象的方法。
BeanFactory 顶层接口
         位于类结构树的顶端 ,它最主要的方法就是 getBean(String beanName),该方法从容器中
返回特定名称的 Bean,BeanFactory 的功能通过其他的接口得到不断扩展:
ListableBeanFactory
        该接口定义了访问容器中 Bean 基本信息的若干方法,如查看 Bean 的个数、获取某一类型
Bean 的配置名、查看容器中是否包括某一 Bean 等方法;
HierarchicalBeanFactory 父子级联
        父子级联 IoC 容器的接口,子容器可以通过接口方法访问父容器; 通过
HierarchicalBeanFactory 接口, Spring 的 IoC 容器可以建立父子层级关联的容器体系,子
容器可以访问父容器中的 Bean,但父容器不能访问子容器的 Bean。Spring 使用父子容器实
现了很多功能,比如在 Spring MVC 中,展现层 Bean 位于一个子容器中,而业务层和持久
层的 Bean 位于父容器中。这样,展现层 Bean 就可以引用业务层和持久层的 Bean,而业务
层和持久层的 Bean 则看不到展现层的 Bean。
ConfigurableBeanFactory
        是一个重要的接口,增强了 IoC 容器的可定制性,它定义了设置类装载器、属性编辑器、容
器初始化后置处理器等方法;

AutowireCapableBeanFactory 自动装配
        定义了将容器中的 Bean 按某种规则(如按名字匹配、按类型匹配等)进行自动装配的方法;
SingletonBeanRegistry 运行期间注册单例 Bean
        定义了允许在运行期间向容器注册单实例 Bean 的方法;对于单实例( singleton)的 Bean
来说,BeanFactory 会缓存 Bean 实例,所以第二次使用 getBean() 获取 Bean 时将直接从
IoC 容器的缓存中获取 Bean 实例。Spring 在 DefaultSingletonBeanRegistry 类中提供了一
个用于缓存单实例 Bean 的缓存器,它是一个用 HashMap 实现的缓存器,单实例的 Bean 以
beanName 为键保存在这个 HashMap 中。
依赖日志框框
         在初始化 BeanFactory 时,必须为其提供一种日志框架,比如使用 Log4J, 即在类路径下提
供 Log4J 配置文件,这样启动 Spring 容器才不会报错。
ApplicationContext 面向开发应用
ApplicationContext 由 BeanFactory 派 生 而 来 , 提 供 了 更 多 面 向 实 际 应 用 的 功 能 。
ApplicationContext 继承了 HierarchicalBeanFactory 和 ListableBeanFactory 接口,在此基础
上,还通过多个其他的接口扩展了 BeanFactory 的功能:

 1. ClassPathXmlApplicationContext:默认从类路径加载配置文件

2. FileSystemXmlApplicationContext:默认从文件系统中装载配置文件
3. ApplicationEventPublisher:让容器拥有发布应用上下文事件的功能,包括容器启动事
件、关闭事件等。
4. MessageSource:为应用提供 i18n 国际化消息访问的功能;
5. ResourcePatternResolver : 所 有 ApplicationContext 实现类都实现了类似于
PathMatchingResourcePatternResolver 的功能,可以通过带前缀的 Ant 风格的资源文
件路径装载 Spring 的配置文件。
6. LifeCycle:该接口是 Spring 2.0 加入的,该接口提供了 start()和 stop()两个方法,主要
用于控制异步处理过程。在具体使用时,该接口同时被 ApplicationContext 实现及具体
Bean 实现, ApplicationContext 会将 start/stop 的信息传递给容器中所有实现了该接
口的 Bean,以达到管理和控制 JMX、任务调度等目的。
7. ConfigurableApplicationContext 扩展于 ApplicationContext,它新增加了两个主要
的方法: refresh()和 close(),让 ApplicationContext 具有启动、刷新和关闭应用上下
文的能力。在应用上下文关闭的情况下调用 refresh()即可启动应用上下文,在已经启动
的状态下,调用 refresh()则清除缓存并重新装载配置信息,而调用 close()则可关闭应用
上下文。
WebApplication 体系架构
        WebApplicationContext 是专门为 Web 应用准备的,它允许从相对于 Web 根目录的
路径中装载配置文件完成初始化工作。从 WebApplicationContext 中可以获得
ServletContext 的引用,整个 Web 应用上下文对象将作为属性放置到 ServletContext
中,以便 Web 应用环境可以访问 Spring 应用上下文。

chuxuezhe_987
关注 关注
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Spring原理以及流程
Fantastic_Liar的博客
08-25 5249
Spring IOC、DI、MVC核心原理 配置阶段 web.xml –> DispatcherServlet init-param–> contextConfigLocation classpath:application.xml url-pattern–> /* 初始化阶段 init –>加载配置文件 IOC容器初始化–>Map 运行阶段...
Spring原理机制
畅志聪的专栏
10-19 2万+
1.Spring是一个开源的轻量级框架,他的核心主要有两部分组成IOC(Inversion of control)控制反转和AOP(Aspect oriented programming)面向切面编程.  2.那么什么是IOC:调用类中的方法不是通过new它的对象来实现而是通过spring配置来创建类对象,而IOC又有两种操作方式(配置文件方式和注解方式),IOC底层运用的技术包括xml配置文件...
Spring Cloud原理详解
Java笔记
11-07 18万+
概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。 实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖...
Spring实现原理
qq_42259971的博客
09-13 2985
在传统的面向对象(OOP)编程中,对垂直切面关注度很高,横切面关注很少,也很难关注,也就是说我们利用OOP思想可以很好的处理业务流程,却不能把系统中的某些特定重复性行为封装在某个模块中,例如在很多的业务中都需要记录操作日志,结果我们不得不在业务流程中嵌入大量的日志记录代码,无论是对业务代码还是对日志代码来说,今后的维护都非常复杂,由于系统中嵌入了这种大量的与业务无关的其他重复性代码,系统的复杂性、代码的重复性都增加了不少,从而使bug的发生率大大增加。核心容器提供 Spring 框架的基本功能。
Spring工作原理
乡野的博客
01-09 3572
1.Spring 原理及Aop与Ioc 内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。 Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置
Spring原理
Demo_Liu的博客
03-22 3万+
1、spring原理       内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。        Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也...
spring实现原理
ernesto的博客
04-17 1487
一:spring基本概念 1)struts2是web框架,hibernate是orm框架 2)spring是容器框架,创建bean,维护bean之间的关系 3)spring可以管理web层,持久层,业务层,dao层,spring可以配置各个层的组件,并且维护各个层的关系 二:spring核心原理 1.IOC控制反转 概念:控制权由对象本身转向容器,由容器根据配置文件创建对象实例并实现各个对象的依赖...
Spring一些基础问题整理
热门推荐
张彦峰的博客
04-07 169万+
Spring相关高频面试题整理
spring原理
wobuxiangnila的专栏
03-18 1575
1、spring原理 spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中, 程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间 的藕合度。它的原理是在applicationContext.xml加入bean标记, 在bean标记中通过class属性说明具体类名、通过property标签说明 该类的属性名、通过constructor-args说
Spring原理篇.xmind
06-09
该思维导图是对Spring框架原理的一个知识讲解,很详细,源码都扣出来了,该文件也挺大的,每个知识点都一步一步截图了。 包括内容:Spring体系结构、Spring重要接口讲解(BeanFactory继承体系、BeanDefinition继承...
java spring 原理
04-26
java spring 原理 简单易懂的介绍了spring 的工作原理
Spring 原理的理解
05-26
**Spring 框架原理详解** Spring 是一个广泛使用的 Java 应用开发框架,它以其依赖注入(Dependency Injection,简称 DI)和面向切面编程(Aspect-Oriented Programming,简称 AOP)为核心特性,极大地简化了企业级...
Spring原理简介.txt
06-06
Spring原理简介.txt
spring原理模拟
12-23
本篇文章将深入探讨Spring框架的实现原理,并通过实例进行模拟演示。 首先,我们要理解Spring的核心概念——依赖注入。在传统的对象创建方式中,一个类通常会直接创建或查找它所依赖的对象。然而,这种硬编码的依赖...
Spring AI Java程序员的AI之Spring AI(二)
qq1071643762的博客
10-16 1126
Spring AI中,如果一个Bean实现了Function接口,那么它就是一个工具函数,并且通过@Description注解可以描述该工具的作用是什么,如果工具有需要接收参数,。
springsecurity使用
最新发布
ghx123456ghx的博客
10-17 301
首先进入免登录的首页,当点击链接进入受到保护页面时,此时因没有登录,页面自动跳到登录页面,在登录页面输入有USER角色的账号时,自动跳到请求的href="/user/index"后台。2 springsecurity配置。3 登录跳转被保护页面流程。
Springboot整合knife4j生成文档
Think_and_work的博客
10-16 390
null
JavaWeb合集05-SpringBoot基础知识
qq_57340195的博客
10-17 929
Autowrite :自动装配,通过声明的数据类型来装配对应的bean对象。缺点,只能获取到一个相同类型的bean对象,如果有IOC容器里面有2个Bean对象,使用@Autowrite依赖注入就好报错。由于三层架构中,每一层都需要下次成来提供对应的方法,所有要new 下一次的对象,如果上一层的类名发送改变,那么上一层就需要修改对应的类名,如下。3、@Resource注解:通过它来代替@Autowrite注解,直接指定要注入的Bean对象,参数name的值就是要注入的Bean对象。
写文章

热门文章

  • Solidworks2022草图标注尺寸和实际尺寸不符如何解决? 9541
  • Deepl翻译突破字数限制 6535
  • python 内置函数和多线程 2387
  • R语言介绍及安装教程 2268
  • Spring 原理 2082

分类专栏

  • JVM 10篇
  • R 1篇
  • #模板模式 3篇
  • #工厂模式 2篇
  • 设计模式 10篇
  • #适配器模式 2篇
  • #享元模式 3篇
  • #建造者模式 2篇
  • #装饰者模式 2篇
  • #桥接模式 3篇
  • #组合模式 3篇
  • #外观模式 3篇
  • #原型模式 2篇
  • #代理模式 3篇
  • #命令模式 3篇
  • 中间件 2篇
  • 观察者模式 2篇

最新评论

  • Deepl翻译突破字数限制

    gracedu1996: 文件在哪里下载

  • 网络架构介绍

    简单简单小白: 讲解的很详细,很有参考价值

  • Spring 依赖注入方式与自动装配

    chuxuezhe_987: Thank you for your support

  • Spring 依赖注入方式与自动装配

    征途黯然.: The explanation of Spring依赖注入方式与自动装配 is very clear, and I have gained a deeper understanding.

  • Spring 原理

    小余要努力: 支持大佬原创好文,望回关

最新文章

  • RabbitMQ
  • Kafka
  • Zookeeper
2023年135篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chuxuezhe_987

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

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

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

打赏作者

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

抵扣说明:

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

余额充值

玻璃钢生产厂家景观玻璃钢雕塑哪家靠谱山东玻璃钢海豚雕塑艺术摆件临沧市玻璃钢雕塑吉林玻璃钢牛动物雕塑艺术摆件泡沫玻璃钢雕塑批发赤峰玻璃钢吉祥卡通雕塑深圳人物玻璃钢雕塑供应商东莞玻璃钢蝎子雕塑上海镜面玻璃钢雕塑性价比高玻璃钢雕塑属于什么行业商场里的美陈是什么意思黟县玻璃钢雕塑厂家端州玻璃钢浮雕雕塑公司张家口玻璃钢山羊雕塑定做古铜玻璃钢雕塑台州玻璃钢广场雕塑走廊商场美陈销售厂家上海玻璃钢螳螂雕塑淮南欧式玻璃钢雕塑玻璃钢雕塑牙膏广州玻璃钢雕塑有哪些划算的沈阳玻璃钢花盆商丘玻璃钢仿铜雕塑设计陕西景观玻璃钢雕塑哪家便宜信阳校园玻璃钢雕塑定做玻璃钢抽象雕塑出售卢湾玻璃钢花盆玻璃钢雕塑摆件价格玻璃钢浮雕房地产雕塑定做安徽卡通玻璃钢雕塑造型贴金香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化