首页 > 解决方案 > google guice @Inject 在春季进行 DI @Autowired 时给出 null

问题描述

我在 Spring 框架和微服务架构中工作。我有一个类似MainClass.java的课程,我正在LibraryClass.java使用@AutoWired. LibraryClass.java类存在于里面data-lib.jar

import org.springframework.beans.factory.annotation.Autowired;
import com.data.LibraryClass;

public class MainClass {

    @Autowired
    LibraryClass libraryClass;

    String value = libraryClass.getData();
}

内部data-lib.jar依赖 jarLibraryClass.java文件看起来像这样,我正在OtherLibraryClass.java使用 google guice DI 注入@InjectOtherLibraryClass.java类也出现在里面data-lib.jar

package com.data;
import com.google.inject.Inject;

public class LibraryClass {

     @Inject
     OtherLibraryClass otherLibraryClass;

     public String getData() {
          return  otherLibraryClass.getValue(); // throwing null pointer exception      
     }

}

从它调用getData()方法时抛出空指针异常。MainClass.java看起来OtherLibraryClass.java实例不是由 Guice 自动创建的。如果它是由 Guice 创建的,则自动注入所有依赖项。

我不想改变里面的任何东西data-lib.jar。我可以改变,MainClass.java这样问题就会解决。有什么方法可以正常工作,没有任何例外。

注意: data-lib.jar是在游戏框架中构建的。这就是为什么我不想在依赖 jar 中进行更改。如果我们getData()从其他 play framework serv 调用方法,它工作正常。只有在从 spring frameworks serv 调用时,我才面临这个问题

提前致谢

标签: springspring-bootdependency-injectionplayframeworkguice

解决方案


推荐阅读