我有一个像这样的自动连线课程
@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;
.......
}
5条答案
按热度按时间qmb5sa221#
班级
ApiConnection
未被spring找到,因为它既没有注解为@Component
两者都不是@Repository
.如果你用
@Component
应该有用。还要确保spring扫描了包含该类的包。
olhwl3o22#
你的第二节课标的是 Spring Bean 吗?你在 Spring 前扫描过你第二节课的包裹吗?
您可以在spring站点查看配置示例
编辑:为您尝试注入的bean创建一个setter
cwxwcias3#
我遇到了同样的问题,通过添加
@Service
第二节课public class ApiConnection
. 第一节课已经有@Service
. 在此步骤中,它仍然不起作用(返回NullPointerException
). 另外,在使用ApiConnection
,比如说ApplicationImpl
,我添加了@autowired onApiConnection apiConnection;
(ApiConnection apiConnection = new XXX
以前使用过)。那就行了。a2mppw5e4#
我找到了解决办法。由于apiconnection对象是手动创建的,所以spring框架不会自动连接它。
tp5buhyn5#
尝试向apiconnection添加一个接口,以验证它是否由spring容器加载。
对autowiring类执行相同的操作,并验证它们是在同一上下文中加载的。
你的问题可能是:
bean没有用spring初始化
自动连线bean属于另一个上下文
apiconnection的上下文未使用指示context:annotation-config/