怎么理解spring?

理解 Spring Bean Spring IoC 容器本身无法直接识别配置元数据。为此,需要将这些配置信息转换为 Spring 能够理解的格式——对象。类名:Bean 的全限定类名,必须是具体类,不能是抽象类或接口。行为配置:包括作用域、自动绑定模式、生命周期回调等元素。依赖关系:对其他 Bean 的引用,也称为合作者或依赖。属性设置:Bean 属性的配置。 阅读详情

目录

1、关于控制反转 ioc

2、关于面向切面 AOP


1、关于控制反转 ioc

  • 控制反转:所谓的控制反转。通俗地讲,就是把原本需要程序员自己创建和维护的一大堆bean统统交由Spring管理。
  • 总体思想:类似于有一个具有全局视角的boss(IOC容器),减弱了之前一层一层的强依赖,降低了耦合度。不再通过 new 关键字来创建对象,而是通过 IoC 容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面过去即可。
  • 具体如何使用:如果在程序中需要某个对象,可以使用@Autowird注解,IOC容器就会生成这个对象,然后就可以在程序中使用了。
  • 底层原理:

    IOC 本质上是一个容器,以 MAP 对 IOC 简单举例:服务器加载配置文件,由 xml 文档 解析工具读取 文件中bean 的 ID,获取到 class,使用反射创建对象,以 K-V 的形式存入 MAP,K 是 ID, V 是反射创建的对象。获取对象可以调用 context.getBean(K)的方式。


2、关于面向切面 AOP

  • 面向切面:通俗地讲,它一般被用来解决一些系统交叉业务的织入,比如日志啦、事务啥的。将相同逻辑的重复代码横向抽取出来,使用动态代理技术将这些重复代码织入到目标对象方法中,实现和原来一样的功能。

  • 底层原理:动态代理(使用动态代理实质上就是调用时拦截对象方法,对方法进行改造、增强!)

1)动态代理的两种方式:

  • jdk动态代理 --- 针对实现了接口的对象;

Spring AOP默认是使用JDK动态代理,如果代理的类没有接口则会使用CGLib代理。

  • CGLib动态代理 --- 针对没实现接口的对象。

CGLib代理其生成的动态代理对象是目标类的子类

2) 那么JDK代理和CGLib代理我们该用哪个呢??

单例最好使用CGLib,多例使用jdk动态代理。因为创建性能这方面jdk更好(为啥?有接口的创建性能更好),所以需要创见多个实例的时候,jdk效果可能更好;运行性能CGLib更好(为啥?没接口的对象创建好了调用其方法更快),所以单例的情况下效果可能更好。

  • JDK在创建代理对象时的性能要高于CGLib代理,而生成代理对象的运行性能却比CGLib的低。
  • 如果是单例的代理,推荐使用CGLib

 

 

 

 

java——谈谈对Spring的Bean理解 对象:在Spring中,Bean本质上是一个符合JavaBean规范的普通Java对象(POJO)。JavaBean通常具有无参构造函数、私有属性和对应的getter/setter方法。管理:Spring容器负责Bean的创建、配置、装配和销毁。这意味着开发者不需要手动管理这些对象的生命周期。在Spring框架中,Bean是由Spring容器生成并管理的对象。它们通过配置文件、注解或Java代码进行定义和配置。Spring容器负责Bean的整个生命周期,包括实例化、配置、装配和销毁。 阅读详情

相关推荐

FreeCAD MCP实战:用自然语言驱动AI建模,效率提升10倍

MCP(Model Context Protocol)是一种让AI模型调用外部工具和数据的协议标准,通过标准化通信层解决AI与CAD软件之间的交互难题。其原理是向AI暴露工具清单,AI根据自然语言需求自动选择工具并填充参数。在工程实践中,这一技术显著降低了CAD建模门槛,将重复性操作从手动点击转为语音指令,适用于批量零件生成、参数化设计等场景。FreeCAD作为开源CAD,凭借开放的Python API和脚本化能力,成为落地MCP的理想平台。本文基于FreeCAD MCP的实操经验,分享环境搭建、自然语言建

weixin_31188927的博客 323

Spring 理解

Spring 个人理解 1.概念 一个轻量级开源框架,拥有多个组件(Spring JDBC 、Spring MVC 、Spring Security(可用作单点登入)、 Spring AOP 、Spring ORM 、Spring Test),主要解决业务逻辑层与其他各个层的耦合问题,因此将面向接口编程贯彻整个系统应用,核心即控制反转Ioc与面向切面编程Aop,最为典型的当属数据库事务的使用,还能整合开源世界众多著名的第三方框架和类库,应该说Spring框架已经融入到了Java EE的各个开发领域。 2.优

cxydkh的博客 3713

励磁电感 Lm 选对了,LLC 才真“高效”:半桥 LLC 效率优化

你有没有遇到过这种 LLC:参数一套下来,ZVS 也有了,波形看着也“挺谐振”,但一上功率——,效率就是死活上不去。我说句直白的:LLC 的“高效”,很大一部分其实是在背后控场。Lm 选小了,励磁电流蹭蹭涨,谐振电流 RMS 变大,导通损耗、开关损耗、整流损耗一起上天;Lm 选太大,又可能把 ZVS 的门槛抬高,轻载掉 ZVS,EMI 也开始作妖。

weixin_43199439的博客 434

spring的理解

#1.谈谈你对 Spring 的理解? 1.狭义上 spirng 就是指 Spring Framework,特别是其中的核心思想控制反转和依赖注入、事务处理等特性,在进行大型项目开发的时候能够帮助我们更好的管理对象。 2.广义上 spring 就是指 spring 家族的一些列产品:如 SpringMvc,SpringBoot,SpringJPA,SpringCloud 等等。Spring 是项目开发中最重要的框架,可以帮助我们更好的管理对象,减少依赖,提高开发效率。 #2.Spring中的容器是什么?

u011442726的博客 9305

3、神经网络在汽车中的应用

本文探讨了神经网络在现代汽车中的多种应用,包括防抱死制动系统(ABS)、燃油喷射系统、自动驾驶辅助系统以及发动机故障诊断。通过详细分析这些系统的具体工作流程和神经网络的集成方式,展示了神经网络如何提升车辆的安全性、效率与智能化水平。

moss5的博客 233

LeetCode 热题 100 回顾

力扣最受刷题发烧友欢迎的 100 道题 LeetCode 热题 100 : 题目回顾、解题思路、复杂度分析、代码实现、验证算法

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 9万+

Spring是什么?怎么理解Spring

sping理解

m0_64005688的博客 977

Python爬虫实战:基于Scrapy与Playwright高效爬取人民网新闻数据

本文将详细介绍如何使用Python最新技术栈(Scrapy框架结合Playwright浏览器自动化工具)高效爬取人民网新闻数据。文章包含完整项目搭建、反反爬策略、数据解析存储以及性能优化等核心内容,提供可直接运行的代码示例,适合中高级Python开发者学习现代网络爬虫开发技术。python# 去除特殊空白字符。

2201_76125261的博客 1118

对于spring的理解

*#Spring ##什么是spring? spring是一个开源的轻量级的应用开发框架,目的就是简化企业级应用程序的开发,降低开发者的开发难度。 spring的核心是对IOC和AOP的应用,可以起到解耦的作用。 ##spring的优势: 方便解耦,简化开发(通过spring提供的IOC容器,可以将对象之间的依赖关系交给spring控制,避免造成过度程序耦合) AOP的支持(通过spring提供...

qq_36927330的博客 516

GEE训练教程:如何批量从Google assets中将时序影像批量导出到Google drive

本文介绍了一种使用Google Earth Engine(GEE)批量导出2000-2023年叶绿素a(Chl-a)浓度数据的方法。通过JavaScript代码自动生成多个年份的导出任务,将数据保存至Google Drive指定文件夹。文章详细说明了代码参数配置、使用步骤和注意事项,包括资产命名规则验证、导出任务启动方式,以及分辨率、区域范围等关键参数的调整建议。同时提供了常见问题的解决方案,如处理缺失年份数据、解决导出像素超限等问题。该方法可显著提高多年份Chl-a数据批量导出的效率,适用于水体环境研究的

此星光明博客 90

TC3XX - MCAL知识点(三十九):AURIX™ TC3xx 的EDSADC实现旋变解码功能(应用笔记记录)

本文总结了英飞凌应用笔记中关于EDSADC旋变解码系统的关键内容。系统通过调幅解调获取电机位置和速度信号,支持内外载波生成方案,其中内部载波方案更常用(需2个DSADC通道)。重点介绍了滤波器链配置建议(避免FIR1)、系统条件要求(如偶数积分周期)以及群延迟计算方法。特别分析了SDCAP功能对硬件延迟的补偿机制,指出温度等因素可能导致外部电路延迟变化,需通过计数器测量并通过软件调整积分器起始点来消除角度误差。文中还提供了不同硬件延迟情况下的信号处理示例。

梦想技术家 458

对spring的理解

1、Spring是什么? Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。 主要由以下七个模块组成:(CC DAO MW) Spring Core:核心类库,提供IOC服务; Spring Context:提...

weixin_44870201的博客 685

MIPI CPHY学习笔记01:TX物理层一致性测试项解析(LP信令模式)

在手机、平板、智能手表等移动设备中,MIPI C-PHY是负责图像、数据传输的核心接口,它就像设备内部的“高速数据线”,而低功耗(LP)信令模式,是这条“数据线”的“省电模式”,专门用于设备待机、低负载等场景,既要保证信号稳定,又要最大限度降低功耗。物理层一致性测试,就是给这个“省电模式”做的“全面体检”,确保不同厂商的设备能兼容互通。今天,我们就聚焦MIPI C-PHY TX(发射端)的Group 1 LP信令测试,用通俗的语言拆解8个核心测试项,看懂“省电信号”的合格标准。

一只豌豆象的博客 300

Spring理解

Spring的理解   我们经常听见Spring框架,但什么是Spring框架呢,网上查了查,说的都很晦涩,如何更好的理解它呢,我列出来一下我的认知和看法,说的不对理解不对的还请指导! 1、Spring是什么?怎么抽象简单的理解Spring? Spring是一个开源框架(就是一个容器,Spring模块都是在核心容器之上构建的),实现了工厂模式的工厂类,这个类名为BeanFactory(接口),在程序中通常用他的子类ApplicationContext。 2、Spring是一个轻量级的控制反转(IoC)和面

StoptalkingWen的博客 153

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

如何理解Spring中的IOC

此文章可以快速的帮你理解透彻IOC和DI等核心概念。

qq_45821255的博客 1230

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

谈谈你对 Spring 的理解

谈谈你对 Spring 的理解

理想主义的花终将盛开在浪漫主义的土壤里,我的热情永远不会熄灭在现实的平凡之中,我们终将上岸,阳光万里。 276

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring自己的理解

。。

Legolas4的博客 220

spring事务的理解

一、事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 1.获取连接 Connection con = DriverManager.getConnection() 2.开启事务con.setAutoCommit(true/false); 3.执行CRUD 4.提交事务/回滚事务 con.commit() / con.rollback(); 5.关闭连接 conn.clos

qq_38621978的博客 591

spring设计模式的理解

spring设计模式的理解

ljk12111217的博客 229

Spring AOP理解

Spring AOP基础解读

I_m_j的博客 1732

浅谈对Spring的理解

本文主要针对Spring Framework做一些简单的理解 前言 基本上我们一谈及对Spring的理解,很多人第一时间想到的就是IOC和AOP。但是,本文将从其他角度出发,先说一说 BeanDefinition BeanPostProcessor 说到IOC和AOP,那我们简单回顾一下: 1. IOC 所谓的控制反转。通俗地讲,就是把原本需要程序员自己创建和维护的一大堆bean统统交由Spring管理。 也就是说,Spring将我们从盘根错节的依赖关系中解放了。当前对象如果需要依赖另一个对象,只要打

不负好时光 1135

深入理解Spring IOC

我们在最开始学习 Spring 的时候,就接触 IOC 了,IOC是Spring相对比较核心的概念,本文上面五个体系可以说是 Spring IOC 中最核心的部分,只有深入理解了IOC,在我们阅读Spring源码的时候,我们才能够更更加清晰。

小徐的博客 2019

对于Spring的配置文件的理解

Spring是一个轻量级框架,提供依赖注入容器,就是IOC(Inversion of Control)容器。依我的理解,Spring的配置文件中所要配置的对象,就是IOC容器所管理的对象。 ...

上善若水 471

Spring中源码理解

它提供了一系列的功能和特性,包括依赖注入、面向切面编程、控制反转等,以简化开发过程并提高代码的可维护性和可测试性。以下是一个简单的示例代码,演示了Spring中如何使用注解进行依赖注入和AOP的实现: 首先,定义一个接口​。这个示例演示了如何使用Spring进行依赖注入和AOP的实现。​启用AOP支持,并在切面类中使用​。接下来,使用Spring的配置类​。最后,使用Spring的​。然后,在另一个类中使用​。​来加载配置类,并调用​。​方法之前执行前置通知。​字段将会被自动注入​。​注解,可以在调用​。

牛肉胡辣汤 171

关于Spring中IoC的一些理解

简介:梳理Spring中IoC的相关知识。 目录: IoC基本概念 装配Bean信息到Spring中 从Spring中获得对象 除了上面三个大的概念,下面还有一些小知识点 bean实例化的方式 bean的作用域 bean的生命周期 1.IoC基本概念 IoC(Inversion of Control),控制反转。原先我们创建对象和管理对象(初始化等)的时候,都是通过在本类中,使用构造方法来...

opt1997的博客 315
上一篇: hashmap 21问
下一篇: java 内存
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值