我有一个像这样的自动装配的课程
@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;
.......
}
答案 0 :(得分:0)
你的第二课是否标记为春豆? 您是否在春季扫描了第二堂课的包裹?
您可以在spring site
查看配置示例编辑: 为你想要注入的bean创建一个setter
public void setApiPermissionCheck(APIPermissionCheck apiPermissionCheck){
this.apiPermissionCheck = apiPermissionCheck
}
答案 1 :(得分:0)
春天找不到班级ApiConnection
,因为它既没有@Component
也没有@Repository
注释。
如果您使用@Component
为您的班级添加注释,那么它应该有用。
还要确保弹簧扫描包含该类的包。
答案 2 :(得分:0)
尝试向ApiConnection添加一个接口,以验证它是否被Spring Container加载。
ApiConneection implements ApplicationContextAware {
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
logger.info("Initializing context is:" + applicationContext);
}
....
}
对自动装配类执行相同操作,并验证它们是否在相同的上下文中加载。
你的问题可能是:
答案 3 :(得分:0)
我找到了解决方案。由于ApiConnection对象是手动创建的,因此Spring框架不会自动装配它。
答案 4 :(得分:0)
我遇到了同样的问题,并通过向第二个班级@Service
添加public class ApiConnection
来解决这个问题。第一堂课已经有@Service
。在此步骤中,它仍然不起作用(返回NullPointerException
)。此外,在使用ApiConnection
的班级中,让我们说ApplicationImpl
,我在ApiConnection apiConnection;
上添加了@Autowired(之前使用的是ApiConnection apiConnection = new XXX
)。然后它工作。