当前位置: 首页 > news >正文

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

问题&#xff1a; <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程序员&#xff0c;需要完成下列功能的gtest测试用例 # 功能描述 给定两个数字型字符串s1和s2,求和&#xff0c;返回值也是字符串 # 接口举例 调用strAdd("123", "132"),输出“255” # 输出要求 - 入参为空串、nu…...

边缘计算网关:智能制造的“智慧大脑”

一、智能制造的崛起 随着科技的飞速发展&#xff0c;智能制造已经成为了制造业的新趋势。智能制造不仅能够提高生产效率&#xff0c;降低生产成本&#xff0c;还能够实现个性化定制&#xff0c;满足消费者多样化的需求。然而&#xff0c;智能制造的实现离不开大量的数据处理和分…...

HNCTF2022Week1 Reverse WP

文章目录 [HNCTF 2022 Week1]超级签到[HNCTF 2022 Week1]贝斯是什么乐器啊&#xff1f;[HNCTF 2022 Week1]X0r[HNCTF 2022 Week1]你知道什么是Py嘛&#xff1f;[HNCTF 2022 Week1]CrackMe[HNCTF 2022 Week1]给阿姨倒一杯Jvav[HNCTF 2022 Week1]Little EndianNSSCTF{Littl3_Endi…...

基于Python的面向对象分类实例Ⅱ

接上一部分继续介绍~ 一、地类矢量转栅格 这一步是为了能让地类值和影像的对象落在同一区域&#xff0c;从而将影像中的分割对象同化为实际地物类别。 train_fn r".\train_data1.shp" train_ds ogr.Open(train_fn) lyr train_ds.GetLayer() driver gdal.GetDrive…...

android手机莫名其妙卸载重装有残留数据

参考文档&#xff1a; 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入门】目标检测

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍YOLOv5入门-目标检测的任务、性能指标、yolo算法基本思想、yolov5网络架构图。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下吧】 上一篇…...

可验证随机函数(VRF)

文章目录 一、背景以及场景共识发展第一代 POW “以力取胜”第二代 POS/DPOS “民主投票”第三代 VRF “运气抽签” 二、可验证随机函数&#xff08;VRF&#xff09;快速开始1. VRF是什么?2. MD5 hash函数和VRF&#xff08;Verifiable Random Function&#xff09;区别3. VRF-…...

Node.js与npm的准备与操作

1.下载 Node.js官网&#xff1a;Node.jsNode.js is a JavaScript runtime built on Chromes V8 JavaScript engine.https://nodejs.org/en 打开后的界面如下&#xff1a; LTS&#xff08;Long Term Support&#xff09;&#xff1a;长期支持版&#xff0c;稳定版 Current&am…...

ui设计师简历自我评价的范文(合集)

ui设计师简历自我评价的范文篇一 本人毕业于艺术设计专业&#xff0c;具有较高的艺术素养&#xff0c;平时注重设计理论知识的积累&#xff0c;并将理论应用到作品中。了解当下设计的流行趋势&#xff0c;设计注重细节、重视用户体验&#xff0c;对色彩搭配有着浓厚的兴趣&…...

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 看来是把参数中的非法字符就加上了转义 从而在数据库中只能把单引号当成普通的字…...

如何保证缓存和数据库的双写一致性?

一、什么是数据库和缓存双写一致性&#xff1f; 在分布式系统中&#xff0c;数据库和缓存会搭配一起使用&#xff0c;以此来保证程序的整体查询性能。也就说&#xff0c;分布式系统为了缓解数据库查询的压力&#xff0c;会将查出来的数据保存在缓存中&#xff0c;下次再查询时…...

Rosbag 制作 TUM数据集

Rosbag 制作 TUM数据集 一、创建rgb和depth文件夹和txt文件 mkdir rgb mkdir depth touch rgb.txt touch depth.txt 二、替换 bag 路径 和 topic tum.py&#xff1a; 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、根据各种相关软件的用户群&#xff0c;提出构思新颖、有高度吸引力的创意设计&#xff1b;   2、对页面进行优化&#xff0c;使用户操作更趋于人性化&#xff1b;   3、维护现有的应用产品&#xff1b;   4、收集和分析用户对于GUI的需求。   二、需要学什么…...

超实用!Spring Boot 常用注解详解与应用场景

目录 一、Web MVC 开发时&#xff0c;对于三层的类注解 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的编程实现

目录 说明&#xff1a; 1. 服务模型 2. 实现过程&#xff08;C&#xff09; 创建功能包 创建客户端代码&#xff08;C&#xff09; 配置客户端代码编译规则 编译 运行 3. 实现过程&#xff08;Python&#xff09; 创建客户端代码&#xff08;Python&#xff09; 运行…...

小程序和Vue写法的区别主要有什么不同

1.语法不同&#xff1a;小程序使用的是WXML、WXSS和JS&#xff0c;而Vue使用的是HTML、CSS和JSX。 2.数据绑定方式不同&#xff1a;小程序使用的是双向数据绑定&#xff0c;而Vue使用的是单向数据流。 1&#xff09;在小程序中需要使用e.currentTarget.dataset.*的方式获取&…...

【限时解锁】Gemini深度研究模式私有化部署方案:仅3家头部科研机构掌握的本地化推理链配置

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Gemini深度研究模式的核心原理与能力边界 Gemini深度研究模式并非简单增强上下文长度的推理机制&#xff0c;而是一种面向复杂知识密集型任务的分层式认知架构。其核心原理在于动态构建“问题-证据-推理”三元…...

【限时解析】DeepSeek 2024 Q3计费规则更新:2项重大变更将影响92%高频用户

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek计费模式分析 DeepSeek 提供的 API 服务采用按量计费&#xff08;Pay-as-you-go&#xff09;模式&#xff0c;核心计费维度为模型调用所消耗的 Token 总数&#xff0c;包含输入&#xff08;prompt&…...

Python爬虫绕过JA3/JA4指纹检测的TLS定制实战

1. 这不是“绕过检测”&#xff0c;而是理解TLS握手的底层语言你写好了一个Python爬虫&#xff0c;目标网站明明没上WAF、也没用Cloudflare&#xff0c;但一发请求就返回403——连HTML正文都没有&#xff0c;只有个空响应体。抓包一看&#xff0c;服务器在TCP三次握手之后、TLS…...

2026亲测:专业AI智能降重工具TOP1推荐

2026 年降 AIGC 工具已从“机械式文本改写”演进为多维度智能优化系统&#xff0c;核心评估指标涵盖 AI 痕迹识别精准度、专业语义一致性、格式结构完整性、长段落逻辑稳定性、降重适配性以及高校检测合规性。本次测评深入分析 5 款主流工具&#xff0c;测试内容覆盖中英文论文…...

【工信部备案级新闻稿生成协议】:ChatGPT输出自动匹配《新闻采编规范》第4.2.1条的7层校验模板

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;【工信部备案级新闻稿生成协议】的合规性定位与政策背景 【工信部备案级新闻稿生成协议】并非独立行政规章&#xff0c;而是对《互联网信息服务算法推荐管理规定》《生成式人工智能服务管理暂行办法》…...

上下文是新的算力吗?

在过去六个月里&#xff0c;前沿级AI能力的推理成本下降了约85%。来自Meta、阿里巴巴等公司的开放权重模型&#xff0c;如今在关键基准测试上已经能匹敌上个季度最好的闭源模型。一个曾经每月花费数千美元运行在领先专有模型上的生产工作负载&#xff0c;现在可以用开源替代方案…...

终极指南:用BG3 Mod Manager轻松管理《博德之门3》模组

终极指南&#xff1a;用BG3 Mod Manager轻松管理《博德之门3》模组 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 你是否曾经因为《博德之门3》的模…...

对比直接使用厂商 API,通过 Taotoken 聚合调用的便利之处

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用厂商 API&#xff0c;通过 Taotoken 聚合调用的便利之处 1. 引言&#xff1a;从多平台管理到统一入口 在开发基于大语…...

基于IoT、DRL与3DCNN的智能森林火灾监测系统设计与实践

1. 项目概述&#xff1a;一个融合感知、决策与验证的智能防火哨兵森林火灾的早期发现是遏制其蔓延、减少生态与经济损失的关键。传统的人工瞭望塔监测方式不仅效率低下、覆盖范围有限&#xff0c;而且严重依赖人力&#xff0c;难以实现全天候、大范围的持续监控。近年来&#x…...

Cursor Pro破解工具:绕过试用限制的完整技术方案

Cursor Pro破解工具&#xff1a;绕过试用限制的完整技术方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial re…...