最新要闻
- 蓉火传递启动|“中国民航英雄机组”成员毕楠:当上火炬手,是荣誉也是责任 全球热消息
- 今天上午,合肥体育中心又火了
- 国内物价运行总体平稳——解读5月份CPI和PPI数据-环球速看料
- 肌酐高吃什么能降下来(肌酐高可以吃哪些水果来降肌酐?) 世界今日讯
- 全国首家“特斯拉GIGA实验室”亮相:沉浸体验45秒造一辆车_当前观点
- Zen5加持!AMD锐龙8000桌面APU曝光:集显把入门卡虐成炮灰 环球微速讯
- 华为5款机型迎HarmonyOS 3.0新版 动图感受下:太方便
- “中国大学生音乐艺术节”西南交通大学站“破解”青春的音乐密码|环球百事通
- 【播资讯】暗黑4出血巅峰效果介绍
- 陕西历史博物馆与高校共建大学生思想政治教育基地签约仪式|世界要闻
- 低价团乱象再起 何以无解?
- 世界关注:扁桃体发炎会引起发烧_扁桃体发炎会发烧吗
- 每日短讯:布雷好吃吗_布雷是什么甜品
- 极目时评丨环卫母亲与高考儿子相拥而泣刷屏,普通人改变命运的努力打动人心
- 焦点消息!湖北省夷陵区发布高温橙色预警
- 空难40天后,机上4名儿童在丛林被发现幸存,最小的只有11个月大 每日看点
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【天天热闻】Spring中的字段注入是如何实现的
spring中属性的注入方式
Spring中属性注入的方式包括以下几种:
(资料图片)
Setter 方法注入:通过在 Bean 类中定义对应的属性setter方法,然后在 XML 配置文件或 Java 配置类中使用
或 @Value 注解来为这些属性设置数值。 构造函数注入:通过在 Bean 的构造函数中定义对应的参数来实现。在 XML 配置文件或 Java 配置类中使用
元素或 @Autowired 注解来指定参数的值。 字段注入:通过在 Bean 类中添加对应的字段,并添加 @Autowired 或 @Resource 等注解,让 Spring 自动将需要的依赖注入到该字段中。
接口回调注入:通过实现一个特定的接口,如 ApplicationContextAware 接口、BeanNameAware 接口等,并重写该接口中的对应方法,使得 Spring 在创建 Bean 时调用这些方法来完成依赖注入。
除了以上四种方式外,还可以通过自定义注入器来实现属性注入,用户可以自定义一个 Injector 实现类,并在 XML 配置文件或 Java 配置类中注册该实现类,以实现更加灵活的注入方式。
总的来说,Spring 中的属性注入主要就是通过 Bean 容器来管理各个 Bean 对象之间的依赖关系,而 Spring 提供的各种注入方式,都是为了提供更加灵活、方便地实现属性注入,以满足不同场景下的需求。
字段注入的原理
Spring 中的字段注入会使用到 Java 反射技术。
具体来说,在 Spring 对象创建时,会先通过构造函数或工厂方法等方式实例化 Bean 对象,然后再进行属性注入。对于字段注入,Spring 内部维护了一个 AutowiredAnnotationBeanPostProcessor 后置处理器,在对象创建完成后,会检查 Bean 中标记了 @Autowired 或 @Resource 注解的字段,并根据字段类型和名称在容器中寻找匹配的 Bean 对象,最终通过反射将依赖注入到对应的字段中。
下面是字段注入的具体源码实现:
public class AutowiredAnnotationBeanPostProcessor implements BeanPostProcessor { // ... @Nullable private Object autowiredProperty( String beanName, Object bean, PropertyDescriptor pd, @Nullable Object propertyValue) { // 获取当前属性的注解信息 Method writeMethod = pd.getWriteMethod(); Annotation[] annotations = bridge.getAnnotations(writeMethod); for (Annotation ann : annotations) { if (ann instanceof Autowired) { // 如果是 @Autowired 注解,则从容器中查找并注入依赖 Object value = autowireByType( beanName, bean, pd.getPropertyType(), pd.getName(), ann); if (value != null) { propertyValue = value; } } else if (ann instanceof Inject) { // ... } else if (ann instanceof Value) { // ... } } return propertyValue; } @Nullable protected Object autowireByType( String beanName, Object bean, Class> type, String fieldName, @Nullable Annotation autowiredAnnotation) { // 获取 AutowireCapableBeanFactory 对象 AutowireCapableBeanFactory factory = getAutowiredCapableBeanFactory(); // 根据类型和名称在容器中查找 Bean 对象 Object res = null; if (factory != null) { DependencyDescriptor desc = new AutowireUtils.TypeDependencyDescriptor( type, autowiredAnnotation, true, getNonSelfDeclaredPropertiesOnly()); res = factory.resolveDependency(desc, beanName, null, null); } return res; } // ...}
在上述代码中,autowiredProperty 方法用于注入单个属性值,并依次遍历该属性上的各种注解信息。当检测到 @Autowired 注解时,则调用 autowireByType 方法对该属性进行自动装配。在 autowireByType 方法中,会调用 AutowireCapableBeanFactory 的 resolveDependency 方法,通过 type 和名称等信息在 Spring 容器中查找匹配的 Bean 对象,并返回对象实例。
总的来说,Spring 中的字段注入使用 Java 反射技术实现,可以更加灵活地管理对象之间的依赖关系。当然,反射也可能导致性能瓶颈,在实际开发中需要适度使用,并结合其他技术手段对其进行优化。
关键词:
【天天热闻】Spring中的字段注入是如何实现的
弱网测试 - Charles弱网测试
蓉火传递启动|“中国民航英雄机组”成员毕楠:当上火炬手,是荣誉也是责任 全球热消息
今天上午,合肥体育中心又火了
国内物价运行总体平稳——解读5月份CPI和PPI数据-环球速看料
肌酐高吃什么能降下来(肌酐高可以吃哪些水果来降肌酐?) 世界今日讯
全国首家“特斯拉GIGA实验室”亮相:沉浸体验45秒造一辆车_当前观点
Zen5加持!AMD锐龙8000桌面APU曝光:集显把入门卡虐成炮灰 环球微速讯
华为5款机型迎HarmonyOS 3.0新版 动图感受下:太方便
“中国大学生音乐艺术节”西南交通大学站“破解”青春的音乐密码|环球百事通
【播资讯】暗黑4出血巅峰效果介绍
陕西历史博物馆与高校共建大学生思想政治教育基地签约仪式|世界要闻
基于python-统计所有AWS-EC2的Events-事件信息-并进行邮件通知
全球动态:从零玩转系列之微信支付安全
头条:前端vue地图定位并测算当前定位离目标位置距离可用于签到打卡
低价团乱象再起 何以无解?
世界关注:扁桃体发炎会引起发烧_扁桃体发炎会发烧吗
每日短讯:布雷好吃吗_布雷是什么甜品
极目时评丨环卫母亲与高考儿子相拥而泣刷屏,普通人改变命运的努力打动人心
焦点消息!湖北省夷陵区发布高温橙色预警
空难40天后,机上4名儿童在丛林被发现幸存,最小的只有11个月大 每日看点
科普图解 | 筑牢生态屏障!一图看懂我国防沙治沙新成就-今日视点
夏日游戏节缺乏女性身影 遭多位外媒记者和推特大V批评 天天热讯
【原】4月17星期日
【天天新视野】专家企业家齐聚哈尔滨 共谋人工智能引领龙江数字经济发展
每日热讯!《绝命毒师》演员在睡梦中去世终年52岁 突发心脏病:影迷难受
【全球独家】奇迹!空难40天后 4名儿童被发现幸存:最小不到1岁
丰田真急了!汉兰达新车型正式上市 :28.28万起厂家再补2万 观速讯
电脑中缺失maxnetbackburner.dll文件应该怎么处理 当前信息
一女子跳河,00后男孩营救不幸溺亡,钓友划船将女子安全救回
对华光伏板关税战,印度准备认输? 播报
环球速讯:6-3、6-4、6-0!鲁德闯进法网决赛,兹维列夫坦言心服口服
清远公用品牌IP形象亮相
天天视讯!戊肝的主要传播途径是 戊肝的主要传播途径
杀蚊子用什么药水最好 杀蚊子最好的药 环球短讯
天天快播:“三夏”机收快速推进 已收获冬小麦面积2.04亿亩
环球即时看!淮安:205国道京杭运河特大桥 雄伟壮观 助力腾飞
个人博客留言板功能实现
2023高考今日落幕,多地公布志愿填报时间
团伙设下“首付购车”骗局,黄石两家4S店掉进陷阱
【财经分析】养老金融迎发展机遇期 保险行业大有可为
【环球新要闻】TheShy素质三连图火了,爆笑流酒桶登场,撞墙空大,随后拿下MVP
全球热文:这就是信心|优化营商环境 各地硬招、实招频出
【环球播资讯】伊藤美诚戴奥运金牌回母校,豪言:巴黎夺冠!79岁爷爷为她立碑!
12306买卧铺票可以在线选铺了!操作指南出炉:很方便
今热点:坚持不变!福岛核污染水排海设施下周一试运行:测试两周左右
优惠100元:可孚全自动电子血压计39元发车!30天无理由退货 全球即时看
解读2021款合创007,纯电中型SUV,续航643km,售价29.98万
当前头条:感冒发烧应吃什么食物(感冒发烧的患者可以吃什么食物)
2023年6月9日江苏省氯化铵价格最新行情预测
6月10日起,12306网站试行在线选铺服务
华南等地暴雨如注 长江中下游高温增多闷热加剧
重庆南川:“政企早茶会”解企业成长烦恼树发展信心
第12届金交会开幕,现场签约总金额超3500亿元
欣旺达创始人王明旺:明年量产钠离子电池
中方驳斥:无中生有、信口雌黄、恶意诋毁!
杯具!上海一小区电动车爆炸起火 家人惨被烧伤:网友吵翻为何电池拿回家充电
今年端午假期或成近五年最火端午:消暑纳凉游受青睐 全球即时看
华为获转让问界商标:可用于汽车等
奋进新征程兰台谱新篇 温州启动“6·9”国际档案日系列活动 热推荐
2023年6月9日山东省乙腈价格最新行情预测
qq号码注册机_qq注册码是什么怎么获得
24核M2 Ultra处理器性能跑分出炉 Intel/AMD笑了:苹果还嫩-世界资讯
今日精选:显卡销量崩了 出货量暴降背后:越来越贵降价不现实 英伟达一家独大
立定跳远技巧训练方法_你知道吗_世界快资讯
焦点要闻:Linux数据分析之九个给力的命令行工具
Oracle启动命令
微胖女孩,夏天怎么露肤才好看?
焦点要闻:卷疯!国产带头杀价 4TB SSD被杀至969元:闪存、性能没得说
这么多年终于等来了!今起12306试行在线选铺服务:自选上下铺
资讯推荐:一夜10大转会动态:皇马官宣新援加盟,阿森纳天价求购西汉姆队长
读改变未来的九大算法笔记08_并非万能的算法-最资讯
查肝功能多少钱?_查肝功能大概多少钱
热门看点:写出氯气与水反应的离子方程式_氯气与水反应的离子方程式为________________ 新制的氯水
天天观点:怎么更新word目录页码_word怎么更新目录的两种方法
厦钨新能06月09日被沪股通减持142.85万股 环球焦点
【全球快播报】孙燕姿发文纪念出道23周年:创作新作品与AI拼了!
口碑糟糕!美国超级大片《变形金刚7》国内上映1天 票房破亿了
北尘电池厂什么时候出 公测上线时间预告 环球观点
冯小刚有几个孩子啊_冯小刚有几个孩子
什么的小河蚌(什么的小河)
环球新消息丨ASP.NET Core MVC 从入门到精通之Html辅助标签补充及模型校验基础
琴葛蕾怎么复活的_琴格雷_全球资讯
宁王登陆LPL六周年,BLG送上“大礼”!小破站零封Up,斩获四连胜 前沿资讯
三星打印机卡纸怎么办视频_三星打印机卡纸怎么办-世界时讯
今年前5月中国水利建设完成投资较去年同期增长32.1%
《暗黑破坏神4》M站玩家评分:全平台都遭大量差评! 环球新视野
头皮发麻!男子塑料杯捉一只蟑螂 结果睡一晚变一窝
云南大象破门闯入居民家吃饭菜:不是第一次、无人机监控
AMD Zen4撕裂者露出獠牙:96核心寂寞无敌
首发价39999元 三星发布98英寸Q80Z巨幕电视:送电视、手机
常压锅炉压力表多少(常压锅炉压力是多少)
能量洪流幻象哪里出 能量洪流
今日最新!我的朋友死了
环球报道:奥特曼格斗进化3mac全灭s级通关打法(奥特曼格斗进化3全关卡S级通关攻略及注意事项)
惨不忍睹的意思 关于惨不忍睹的意思的介绍-天天通讯
德天空:多家沙特俱乐部正在关注马内|全球热头条
安徽工贸职业技术学院青年志愿者协会
焦点速读:股票行情快报:华大九天(301269)6月9日主力资金净买入8327.52万元
全球微动态丨今日hdmi可以输出5.1声道_4K家庭影院5.1声道输入输出怎么设置的方法教程