spring boot @Autowired 为null 处理

spring boot 开发中,经常用到 @Autowired 注入某些服务,但有时发现注入的服务为null。原因很简单,因为服务生成是有先后顺序的。当要注入的服务还没有生成时,自然为null。

解决的方法:通过getBean 手工获取服务。

1、定义 保存所有bean 的类:

java 复制代码
import org.springframework.context.ConfigurableApplicationContext;

public class ApplicationContextUtil {
    public static ConfigurableApplicationContext context;
    public static Object getBean(String name){
        if(null == context) return null;
        return context.getBean(name);
    }

}

2、在服务运行的入口处:

java 复制代码
	public static void main(String[] args) {
		ApplicationContextUtil.context = SpringApplication.run(WsApplication.class, args);
	}

3、检测到服务为null 时, 手工获取

java 复制代码
    @Autowired
    private MessageHandle messageHandle;


 if(messageHandle==null)  messageHandle = ApplicationContextUtil.context.getBean(MessageHandle.class);
相关推荐
摸鱼仙人~1 分钟前
重塑智能体决策路径:深入理解 ReAct 框架
前端·react.js·前端框架
都叫我大帅哥1 分钟前
Redis中zset内存变形记
java·redis
小小小小宇2 分钟前
ResizeObserver 和 IntersectionObserver
前端
BigTopOne4 分钟前
android jetpack 有哪些常用的组件
前端
sunbyte4 分钟前
50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | DragNDrop(拖拽占用组件)
前端·javascript·css·vue.js·vue
柚子8167 分钟前
告别FLIP动画:View Transition API带来的革命性变革
前端·javascript
level_xiwei7 分钟前
有关资源泄漏的一些知识
前端
slowlybutsurely8 分钟前
Cursor快速入门
java·ai编程·cursor
excel9 分钟前
使用 Prisma 实现数据库字段的动态迁移实践
前端·后端
天涯学馆11 分钟前
JS 组合模式在组件化开发中的应用:从原理到实战
前端·javascript·面试