1. 首页
  2. 软件开发
  3. JAVA
  4. spring boot @Autowired 为null 处理

spring boot @Autowired 为null 处理

  • 发布于 2024-08-14
  • 0 次阅读

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

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

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

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

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、在服务运行的入口处:

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

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

@Autowired
    private MessageHandle messageHandle;
 
 
 if(messageHandle==null)  messageHandle = ApplicationContextUtil.context.getBean(MessageHandle.class);