Spring中@DependsOn 使用详解
一、注解源码
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DependsOn {String[] value() default {};
}
二、基础概念
@DependsOn是Spring框架用来指定bean之间依赖关系的注解之一,即可用户类上,也可用户方法上。当我们在配置Spring的bean时,有些情况下一个bean可能会依赖于另外
一个bean的初始化(但是并不需要持有,如果需要持有直接注入即可,同时也会保证顺序),此时就可以使用@DependsOn来指定依赖关系,确保它们的初始化顺序得到保证。
作用在类上:
@Component(value = "dependsOnClassA")
@DependsOn(value = {"dependsOnClassB"})
public class DependsOnClassA {private final Logger logger = LoggerFactory.getLogger(DependsOnClassA.class);public DependsOnClassA(){logger.info("执行DependsOnClassA的构造方法");}
}
可以看到,DependsOnClassA类上使用@Component注解标注,并且指定了Bean的名称为dependsOnClassA(若不指定默认驼峰),以及使用@DependsOn注解指定了依赖的Bean名称为dependsOnClassB。
@Component(value = "dependsOnClassB")
public class DependsOnClassB {private final Logger logger = LoggerFactory.getLogger(DependsOnClassB.class);public DependsOnClassB(){logger.info("执行DependsOnClassB的构造方法");}
}
可以看到,在DependsOnClassB类上标注了@Component注解,指定了Bean对象的名称为dependsOnClassB。由DependsOnClassA类和DependsOnClassB类可以看出,在Spring中创建DependsOnClassA类的对象时,会依赖DependsOnClassB类的对象。所以,在Spring中,创建DependsOnClassA类的对象之前,会先创建DependsOnClassB类的对象。
需要注意的是,使用@DependsOn注解应该尽量避免出现循环依赖(即 A 依赖于 B,而 B 又依赖于 A),否则会导致应用程序启动失败。同时,这种方式也会使代码显得不够优雅,因此在实际开发中建议使用更好的依赖注入方式,尽量避免使用@DependsOn注解。
相关文章:
Spring中@DependsOn 使用详解
一、注解源码 Target({ElementType.TYPE, ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented public interface DependsOn {String[] value() default {}; } 二、基础概念 DependsOn是Spring框架用来指定bean之间依赖关系的注解之一,即可用户类…...
android笔记 SELinux
1.SELinux解错步骤 log信息: 11-20 02:25:12.526 8976 8976 W om.jzzh.setting: type1400 audit(0.0:1316): avc: denied { write } for name"com.jzzh.setting-IWLR9dkz8TWizbNujdTpWw" dev"mmcblk2p15" ino2661 scontextu:r:system_app:s0…...
vue3 keep-alive页面切换报错:parentComponent.ctx.deactivate is not a function
问题: <router-view v-slot"{ Component }"><keep-alive ><component :is"Component" v-if"$route.meta.keepAlive" /></keep-alive><component :is"Component" v-if"!$route.meta.keepA…...
prompt提示
用例生成 # 任务描述 作为一个高级c程序员,需要完成下列功能的gtest测试用例 # 功能描述 给定两个数字型字符串s1和s2,求和,返回值也是字符串 # 接口举例 调用strAdd("123", "132"),输出“255” # 输出要求 - 入参为空串、nu…...
边缘计算网关:智能制造的“智慧大脑”
一、智能制造的崛起 随着科技的飞速发展,智能制造已经成为了制造业的新趋势。智能制造不仅能够提高生产效率,降低生产成本,还能够实现个性化定制,满足消费者多样化的需求。然而,智能制造的实现离不开大量的数据处理和分…...
HNCTF2022Week1 Reverse WP
文章目录 [HNCTF 2022 Week1]超级签到[HNCTF 2022 Week1]贝斯是什么乐器啊?[HNCTF 2022 Week1]X0r[HNCTF 2022 Week1]你知道什么是Py嘛?[HNCTF 2022 Week1]CrackMe[HNCTF 2022 Week1]给阿姨倒一杯Jvav[HNCTF 2022 Week1]Little EndianNSSCTF{Littl3_Endi…...
基于Python的面向对象分类实例Ⅱ
接上一部分继续介绍~ 一、地类矢量转栅格 这一步是为了能让地类值和影像的对象落在同一区域,从而将影像中的分割对象同化为实际地物类别。 train_fn r".\train_data1.shp" train_ds ogr.Open(train_fn) lyr train_ds.GetLayer() driver gdal.GetDrive…...
android手机莫名其妙卸载重装有残留数据
参考文档: https://developer.android.com/guide/topics/data/autobackup?hlzh-cn https://developer.android.com/about/versions/12/backup-restore#xml-changes https://stackoverflow.com/questions/70365809/how-to-specify-to-not-allow-any-data-backup-wit…...
【YOLOv5入门】目标检测
【大家好,我是爱干饭的猿,本文重点介绍YOLOv5入门-目标检测的任务、性能指标、yolo算法基本思想、yolov5网络架构图。 后续会继续分享其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】 上一篇…...
可验证随机函数(VRF)
文章目录 一、背景以及场景共识发展第一代 POW “以力取胜”第二代 POS/DPOS “民主投票”第三代 VRF “运气抽签” 二、可验证随机函数(VRF)快速开始1. VRF是什么?2. MD5 hash函数和VRF(Verifiable Random Function)区别3. VRF-…...
Node.js与npm的准备与操作
1.下载 Node.js官网:Node.jsNode.js is a JavaScript runtime built on Chromes V8 JavaScript engine.https://nodejs.org/en 打开后的界面如下: LTS(Long Term Support):长期支持版,稳定版 Current&am…...
ui设计师简历自我评价的范文(合集)
ui设计师简历自我评价的范文篇一 本人毕业于艺术设计专业,具有较高的艺术素养,平时注重设计理论知识的积累,并将理论应用到作品中。了解当下设计的流行趋势,设计注重细节、重视用户体验,对色彩搭配有着浓厚的兴趣&…...
sqli-labs靶场详解(less32-less37)
宽字节注入 原理在下方 目录 less-32 less-33 less-34 less-35 less-36 less-37 less-32 正常页面 ?id1 下面有提示 获取到了Hint: The Query String you input is escaped as : 1\ ?id1 看来是把参数中的非法字符就加上了转义 从而在数据库中只能把单引号当成普通的字…...
如何保证缓存和数据库的双写一致性?
一、什么是数据库和缓存双写一致性? 在分布式系统中,数据库和缓存会搭配一起使用,以此来保证程序的整体查询性能。也就说,分布式系统为了缓解数据库查询的压力,会将查出来的数据保存在缓存中,下次再查询时…...
Rosbag 制作 TUM数据集
Rosbag 制作 TUM数据集 一、创建rgb和depth文件夹和txt文件 mkdir rgb mkdir depth touch rgb.txt touch depth.txt 二、替换 bag 路径 和 topic tum.py: import os import cv2 import numpy as np import rosbag from sensor_msgs.msg import Image from cv_b…...
本地websocket服务端暴露至公网访问【cpolar内网穿透】
本地websocket服务端暴露至公网访问【cpolar内网穿透】 文章目录 本地websocket服务端暴露至公网访问【cpolar内网穿透】1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功…...
男UI设计师主要是做什么的优漫教育
1、根据各种相关软件的用户群,提出构思新颖、有高度吸引力的创意设计; 2、对页面进行优化,使用户操作更趋于人性化; 3、维护现有的应用产品; 4、收集和分析用户对于GUI的需求。 二、需要学什么…...
超实用!Spring Boot 常用注解详解与应用场景
目录 一、Web MVC 开发时,对于三层的类注解 1.1 Controller 1.2 Service 1.3 Repository 1.4 Component 二、依赖注入的注解 2.1 Autowired 2.2 Resource 2.3 Resource 与 Autowired 的区别 2.3.1 实例讲解 2.4 Value 2.5 Data 三、Web 常用的注解 3.1…...
【古月居《ros入门21讲》学习笔记】11_客户端Client的编程实现
目录 说明: 1. 服务模型 2. 实现过程(C) 创建功能包 创建客户端代码(C) 配置客户端代码编译规则 编译 运行 3. 实现过程(Python) 创建客户端代码(Python) 运行…...
小程序和Vue写法的区别主要有什么不同
1.语法不同:小程序使用的是WXML、WXSS和JS,而Vue使用的是HTML、CSS和JSX。 2.数据绑定方式不同:小程序使用的是双向数据绑定,而Vue使用的是单向数据流。 1)在小程序中需要使用e.currentTarget.dataset.*的方式获取&…...
DeFi(去中心化金融)核心概念
**DeFi:重塑金融未来的去中心化革命** 在传统金融体系中,银行、交易所等中介机构掌控着资金流动与金融服务。随着区块链技术的崛起,一种全新的金融模式——去中心化金融(DeFi)正在颠覆这一格局。DeFi通过智能合约和去…...
C++27协程标准化十大争议点终稿确认(含P2389R5/P2713R2/P2877R2等7项关键paper表决结果与工业界影响评估)
第一章:C27协程标准化演进全景与终稿里程碑意义C27协程标准的正式确立标志着C异步编程范式完成从实验性特性到语言级原语的根本性跃迁。自C20引入co_await、co_yield和co_return三大协程关键字以来,委员会持续通过P2526R4(无栈协程语义精化&a…...
自主飞行控制探索:PX4开源飞控的模块化架构与行业应用价值
自主飞行控制探索:PX4开源飞控的模块化架构与行业应用价值 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot PX4开源飞控系统作为无人机领域的核心解决方案,通过模块化架构设计…...
突破数据瓶颈:6大创新方法让时间序列模型性能提升150%
突破数据瓶颈:6大创新方法让时间序列模型性能提升150% 【免费下载链接】Time-Series-Library A Library for Advanced Deep Time Series Models for General Time Series Analysis. 项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library 在…...
3大核心问题解决:B站视频处理全流程指南从下载到去水印的实战方案
3大核心问题解决:B站视频处理全流程指南从下载到去水印的实战方案 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水…...
javaweb物流运输仓储仓库采购信息系统平台的设计与实现
目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分技术实现要点扩展功能安全与权限项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 物流运输管理模块 运输订单管理…...
3大维度解析Source Han Serif CN如何重塑中文字体应用生态
3大维度解析Source Han Serif CN如何重塑中文字体应用生态 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 价值解析:从商业、技术、设计维度重新定义开源字体价值 商业价值…...
PyTorch 2.8镜像参数详解:CUDA 12.4驱动550.90.07环境兼容性避坑指南
PyTorch 2.8镜像参数详解:CUDA 12.4驱动550.90.07环境兼容性避坑指南 1. 镜像核心配置解析 PyTorch 2.8深度学习镜像是一个经过深度优化的通用计算环境,专为现代AI工作负载设计。这个镜像最显著的特点是完整适配NVIDIA最新计算架构,基于RTX…...
Java的迪米特原则介绍
01.问题思考的分析什么是迪米特原则,这个原则如何理解,如何运用到实际开发,举例说明一下?什么是高内聚松耦合,能否举例说明一下?迪米特法则。尽管它不像 SOLID、KISS、DRY 原则那样,人尽皆知&am…...
LingBot-Depth案例分享:修复SLAM生成的稀疏深度,效果实测
LingBot-Depth案例分享:修复SLAM生成的稀疏深度,效果实测 1. 引言:SLAM深度修复的挑战 在机器人导航和增强现实应用中,SLAM(同步定位与地图构建)系统生成的深度图往往存在一个显著问题:稀疏性…...
