Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动布线在一个类中工作,但在另一个类中不工作_Java_Spring Mvc_Autowired - Fatal编程技术网

Java 自动布线在一个类中工作,但在另一个类中不工作

Java 自动布线在一个类中工作,但在另一个类中不工作,java,spring-mvc,autowired,Java,Spring Mvc,Autowired,我有一个像这样的自动连线类 @Component public class APIPermissionCheck { .............. } 它可以在一个java文件中运行。但是它在其他java文件中总是返回null。可能的原因是什么?如何调试/修复此问题 在这个班上学习很好 @Repository("MyClassRepo") public class MyClassRepoImpl implements MyClassRepo { ....... @Autowir

我有一个像这样的自动连线类

@Component
public class APIPermissionCheck {
..............
}
它可以在一个java文件中运行。但是它在其他java文件中总是返回null。可能的原因是什么?如何调试/修复此问题

在这个班上学习很好

@Repository("MyClassRepo")
public class MyClassRepoImpl implements MyClassRepo {
    .......
    @Autowired
    private APIPermissionCheck apiPermissionCheck;
    .......
}
public class ApiConnection {
    .......
    @Autowired
    private APIPermissionCheck apiPermissionCheck;
    .......
}
不在这个班工作

@Repository("MyClassRepo")
public class MyClassRepoImpl implements MyClassRepo {
    .......
    @Autowired
    private APIPermissionCheck apiPermissionCheck;
    .......
}
public class ApiConnection {
    .......
    @Autowired
    private APIPermissionCheck apiPermissionCheck;
    .......
}

您的第二个类是否标记为SpringBean? 你会在春季前扫描你的第二节课的包裹吗

您可以在以下位置查看配置示例:

编辑: 为您尝试注入的bean创建setter

public void setApiPermissionCheck(APIPermissionCheck apiPermissionCheck){
       this.apiPermissionCheck = apiPermissionCheck 
}

spring找不到类
ApiConnection
,因为它既没有注释为
@组件
,也没有注释为
@存储库

如果使用
@组件对类进行注释
,它应该可以工作


还要确保spring扫描了包含该类的包。

尝试向ApiConnection添加一个接口,以验证spring容器是否正在加载它

ApiConneection implements ApplicationContextAware {
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        logger.info("Initializing context is:" + applicationContext);
    }

    ....
}
对自动布线类执行相同的操作,并验证它们是否在同一上下文中加载

你的问题可能是:

  • bean没有用spring初始化
  • 自动连线bean属于另一个上下文
  • ApiConnection的上下文未使用指示

  • 我找到了解决办法。由于ApiConnection对象是在很多地方手动创建的,因此spring framework不会自动连接它。

    我遇到了同样的问题,并通过向第二个类
    公共类ApiConnection添加
    @Service
    解决了这个问题。第一个类已经有一个
    @服务
    。在此步骤中,它仍然不起作用(return
    NullPointerException
    )。此外,在使用
    ApiConnection
    的类中,比如说
    ApplicationImpl
    ,我添加了@Autowired on
    ApiConnection ApiConnection
    ApiConnection ApiConnection=new XXX
    以前使用过)。然后它就起作用了

    我的Web应用程序已经配置好了,所以如果它被标记为@Component,那么它会自动连接,不知道为什么它不能用于ApiConnection类。存储库括号中会有什么?我不是从任何基类实现它。@coure2011请检查包含类
    ApiConnection
    的包是否由spring扫描。是的,包扫描已经在com.myweb.freshCode上进行,而ApiConnection类在com.myweb.freshCode包中。您可以将它放在spring配置文件(定义bean的地方)中创建了像Yes setter这样的节点,但仍然没有帮助如何调查/修复自动连线bean属于另一个上下文?将相同的接口添加到自动连线bean。以相同的方式记录应用程序上下文(将出现类似BlaBlaBla@12ax5121). 比较十六进制中的地址(在@之后),它们应该相等是它的设置正确,我得到logger.info初始化上下文是:ApiConnection和APIPPermissionCheck类的根。尝试输出applicationContext.hashCode()以及名称。根-什么都不说,您可能有多个上下文。ConfigurationManager@40b00a66是在APIPermissionCheck之后生成的,但在ApiConnection之后没有这样的值。那么,您是如何修复它的?