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);
相关推荐
white-persist2 分钟前
差异功能定位解析:C语言与C++(区别在哪里?)
java·c语言·开发语言·网络·c++·安全·信息可视化
whltaoin4 分钟前
【Java 微服务中间件】RabbitMQ 全方位解析:同步异步对比、SpringAMQT基础入门、实战、交换机类型及消息处理详解
spring boot·微服务·中间件·rabbitmq·spring amqt
BBB努力学习程序设计9 分钟前
用Bootstrap一天搞定响应式网站:前端小白的救命稻草
前端·html
嘴平伊之豬9 分钟前
跟着AI速度cli源码三-交互问答系统
前端·node.js
用户01360875668815 分钟前
前端支持的主要数据类型及其使用方式
前端
kokunka16 分钟前
C#类修饰符功能与范围详解
java·开发语言·c#
代码搬运媛21 分钟前
SOLID 原则在前端的应用
前端
仟濹27 分钟前
【Java 基础】3 面向对象 - this
java·开发语言·python
lecepin37 分钟前
AI Coding 资讯 2025-11-17
前端
百***355138 分钟前
什么是Spring Boot 应用开发?
java·spring boot·后端