记录一次ApplicationContext打入jar包后getBean空指针问题

博客讲述了在项目优化过程中,将服务代码抽取到jar包后,使用ApplicationContext.getBean方法时遇到空指针异常的问题。问题出现在SpringContextUtils类在jar包中无法正确获取ApplicationContext。解决方案是在引用该jar包的类上添加@DependsOn注解,确保类的加载顺序。此问题涉及Spring应用上下文加载顺序和jar包依赖管理。
摘要由CSDN通过智能技术生成

        项目中有两个服务,PC和H5,各自的工程代码里都有Service包。后来做代码优化,将service的包抽出来做了一个jar包,PC和H5的服务各自引用该jar包。原本service包在各自服务内部的时候没有问题,抽出来jar包再引用后就发现,使用ApplicationContext.getBean方法时,ApplicationContext报空指针,以下为项目中的代码结构以及解决方法。

        在framework-common的jar包中有一个SpringContextUtils类,类中对ApplicationContext的方法进行了封装:

@Lazy(false)
@Component("springContext")
public class SpringContextUtils implements ApplicationContextAware {

    private static ApplicationContext context;
    private static boolean started=false;

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContextUtils.context=applicationContext;
        started = true;
    }

    public static Object getBean(String name) throws BeansException {
        return context.getBean(name);
    }

}

        在另一个service-common的jar包中,对f

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值