用@Resource 注解总是空指针,直接用spring配置是正常的,用注解就空怎么回事
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用@Resource 注解总是空指针,直接用spring配置是正常的,用注解就空怎么回事相关的知识,希望对你有一定的参考价值。
@Resource注解是先根据类型匹配的,再根据名称匹配;检查一下您的类型是否一致,或匹配名称是否一致;不然您就直接使用spring里提供的替代@Resource的@Autowired试一下。 参考技术A 看看是不是jdk版本低了,换jdk7试试
spring 3.2 注解注入普通BEAN的@Resource 总是得到空指针,怎么解决?
用@Resource注入到ACTION中是可用使用的,但是我当前要把这个服务接口注入到定时器JOB工作累中,对数据库数据进行定时更新操心,但是这个注入的接口总是NULL
spring 配置文件
<!-- 注解搜索路径 -->
<context:component-scan base-package="com.wfms"/>
<!-- 支持注解依赖注入 -->
<context:annotation-config/>
<!-- 支持注解的事务,用于测试 -->
<tx:annotation-driven/>
<!-- 支持注解的aop功能 -->
<aop:aspectj-autoproxy/>
<!-- task任务扫描注解 -->
<task:annotation-driven/>
我不明白为什么在ACTION中可用注入而在普通的类中不能注入呢
你是不是没有搜索到普通类?为什么不用@Autowired 注解。
定时器用的spring quartz 么追问
@Autowired 也尝试过了,不过同样是空指针,即获得不到注入的接口对象。
定时器是用的quartz
定时器类用@Component进行声明了,理论上应该自动进入spring管理。
追答注入的接口是null,你是怎么判断的?如果是报nullpointerException的话有可能就不是spring的问题。因为如果spring找不到bean的话报的是NoSuchBeanDefinitionException。还是上点具体代码吧
追问debug模式是能看见运行时那个对象是空导致程序出现的异常的。
追答没代码帮不了你。给你几点建议。当容器启动时看看quartz是否开始工作(随便给个设定为每秒都执行的方法,看看能不能输出)。如果没工作就说明quartz没注入spring,检查所在包是否涵盖在base-package下。如果工作则检查你的注入接口(照理来说这个不应该为空,如果spring注入失败会给出具体的注入失败的原因的),然后看下你的执行方法中是否有可能出现导致空指针异常的代码。
以上是关于用@Resource 注解总是空指针,直接用spring配置是正常的,用注解就空怎么回事的主要内容,如果未能解决你的问题,请参考以下文章
Servlet中使用注解@Resource注入service,该怎么办