1

我有一个像这样的自动装配类

@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;
    .......
}
4

5 回答 5

0

尝试向 ApiConnection 添加一个接口,以验证它是否被 Spring Container 加载。

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

    ....
}

对自动装配类执行相同的操作,并验证它们是否在相同的上下文中加载。

你的问题可能是:

  1. bean没有用弹簧初始化
  2. 自动装配的 bean 属于另一个上下文
  3. <context:annotation-config/> 未指示 ApiConnection 的上下文
于 2013-06-07T06:06:44.720 回答
0

spring 找不到该类ApiConnection,因为它既没有被注释为@Component也不是 as @Repository

如果你用@Component它来注释你的类应该可以工作。

还要确保带有类的包被spring扫描。

于 2013-06-06T11:14:34.547 回答
0

我找到了解决方案。由于 ApiConnection 对象是手动创建的,因此 spring 框架不会自动装配它。

于 2013-06-07T08:14:17.313 回答
0

你的第二课是否标记为春豆?您是否在春季之前扫描了您的第二节课的包裹?

您可以在spring 站点查看配置示例

编辑: 为您尝试注入的 bean 创建一个设置器

public void setApiPermissionCheck(APIPermissionCheck apiPermissionCheck){
       this.apiPermissionCheck = apiPermissionCheck 
}
于 2013-06-06T11:12:59.487 回答
0

我遇到了同样的问题,并通过将 a 添加@Service到 second class 来解决它public class ApiConnection。第一堂课已经有了@Service. 在这一步中,它仍然不起作用(返回NullPointerException)。另外,在使用的类中ApiConnection,比方说,我在(之前使用过)ApplicationImpl上添加了@Autowired 。然后它工作。ApiConnection apiConnection;ApiConnection apiConnection = new XXX

于 2018-03-22T03:52:37.967 回答