用@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中可用注入而在普通的类中不能注入呢

参考技术A 没有明白你的意思,
你是不是没有搜索到普通类?为什么不用@Autowired 注解。
定时器用的spring quartz 么追问

@Autowired 也尝试过了,不过同样是空指针,即获得不到注入的接口对象。
定时器是用的quartz

参考技术B 你的定时器纳入spring管理了么?追问

定时器类用@Component进行声明了,理论上应该自动进入spring管理。

追答

注入的接口是null,你是怎么判断的?如果是报nullpointerException的话有可能就不是spring的问题。因为如果spring找不到bean的话报的是NoSuchBeanDefinitionException。还是上点具体代码吧

追问

debug模式是能看见运行时那个对象是空导致程序出现的异常的。

追答

没代码帮不了你。给你几点建议。当容器启动时看看quartz是否开始工作(随便给个设定为每秒都执行的方法,看看能不能输出)。如果没工作就说明quartz没注入spring,检查所在包是否涵盖在base-package下。如果工作则检查你的注入接口(照理来说这个不应该为空,如果spring注入失败会给出具体的注入失败的原因的),然后看下你的执行方法中是否有可能出现导致空指针异常的代码。

以上是关于用@Resource 注解总是空指针,直接用spring配置是正常的,用注解就空怎么回事的主要内容,如果未能解决你的问题,请参考以下文章

静态工具类中使用注解注入service为啥还是报空指针异常

@Resource注解到底该怎么用?

Servlet中使用注解@Resource注入service,该怎么办

用实例证明@Autowired和@Resource注解先通过Type还是Name注入

在tomcat 7中获取空指针异常@Resource注释

解决自定义Shiro.Realm扩展类不能用注解(@Resource或@Autowire)自动装配的问题