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);
相关推荐
j***788815 分钟前
clickhouse-介绍、安装、数据类型、sql
java
Running_slave33 分钟前
你应该了解的TCP滑窗
前端·网络协议·tcp/ip
q***47181 小时前
Spring中的IOC详解
java·后端·spring
程序员小寒1 小时前
前端高频面试题之CSS篇(一)
前端·css·面试·css3
vx_vxbs661 小时前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea
颜酱1 小时前
Monorepo 架构以及工具选型、搭建
前端·javascript·node.js
oden1 小时前
ChatGPT不推荐你?7个GEO技巧让AI主动引用你的内容
前端
SunnyDays10112 小时前
如何使用 Java 删除 Word 文档中的水印
java·删除word文档水印
李游Leo2 小时前
前端安全攻防指南:XSS / CSRF / 点击劫持与常见防护实践(含真实案例拆解)
前端·安全·xss
毕设源码-邱学长2 小时前
【开题答辩全过程】以 基于Java企业人事工资管理系统为例,包含答辩的问题和答案
java·开发语言