当前位置: 代码网 > it编程>编程语言>Java > Spring如何使用注解@DependsOn控制Bean加载顺序

Spring如何使用注解@DependsOn控制Bean加载顺序

2025年06月20日 Java 我要评论
1. 前言默认情况下,spring加载bean的顺序是不确定的(或者可以理解为,按编译后的class文件顺序加载)。当我们需要控制bean加载顺序以满足特定的需求时,@dependson就派上用场了。

1. 前言

默认情况下,spring加载bean的顺序是不确定的(或者可以理解为,按编译后的class文件顺序加载)。当我们需要控制bean加载顺序以满足特定的需求时,@dependson就派上用场了。

假设需求场景:

c类加载时要从缓存读取数据,d类加载时会初始化缓存数据。因此,我们必须控制d类优先加载,否则c读到的缓存会是空的。

2. 代码实现

先验证没有加 @dependson 的效果

创建缓存类 mycache

public class mycache {
	private static map<string, object> cache = new hashmap<>();

	public static object get(string key){
		return cache.get(key);
	}

	public static void set(string key, object value){
		cache.put(key, value);
	}
}

创建 c 类,并在构造函数读取 mycache:

@component
public class c {

	public c(){
		system.out.println("name:" + mycache.get("name"));
	}
}

创建 d 类,并在构造函数初始化 mycache:

@component
public class d {
	public d(){
		mycache.set("name", "fuhb");
	}
}

启动程序,这时会输出空的数据:

name:null

这明显不符合我们的需求,因此修改 c 类,增加 @dependson 注解

@component
@dependson(value = { "d" })
public class c {

	public c(){
		system.out.println("name:" + mycache.get("name"));
	}
}

重新启动程序,正常读取了mycache的数据,说明d优先于c加载

name:fuhb

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com