Spring框架引⼊@Resource注解报空指针的解决⽬录
引⼊@Resource注解报空指针
解决⽅案
spring项⽬⽆法引⼊@Resource注解
问题
解决办法
引⼊@Resource注解报空指针
最近刚开始学习Spring框架,在使⽤注解@Resource时,⽆论怎么应⽤都报空指针,主要原因是JDK版本不⽀持,解决⽅案
1、在maven配置⽂件l⽂件中引⼊依赖
at
tomcat-annotations-api
9.0.13
2、更换本地JDK版本,最好1.8以上,注意1.9JDK版本不⽀持,有BUG
spring项⽬⽆法引⼊@Resource注解
问题
在spring项⽬中引⼊@Resource注解的时候,有红⾊下划线错误,⽽且输⼊注解的时候不能出现⾃动代码补全。解决办法
Spring项⽬中缺少javax.annotation包的依赖。在maven配置⽂件l中加⼊依赖。
<!-- mvnrepository/artifact/javax.annotation/javax.annotation-api -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.2</version>
</dependency>
1、在spring的配置⽂件中导⼊命名空间
xmlns:context="/schema/context"
/schema/context
/schema/context/spring-context-2.5.xsd
2、引⼊注解解析器
context:annotation-config></context:annotation-config>
3、在spring的配置⽂件中把bean引⼊进来
4、在⼀个类的属性上加
@Resource(name="student_annotation")
private Student student;
从该注解本⾝
@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)
public @interface Resource {
String name() default "";
}
该注解可以⽤于属性上或者⽅法上,但是⼀般⽤于属性上
该注解有⼀个属性name,默认值为""
5、分析整个过程
1.当启动spring容器的时候,spring容器加载了配置⽂件
2.在spring配置⽂件中,只要遇到bean的配置,就会为该bean创建对象
3.在纳⼊spring容器的范围内查所有的bean,看哪些bean的属性或者⽅法上加有@Resource
4.到@Resource注解以后,判断该注解name的属性是否为""(name没有写)
如果没有写name属性,则会让属性的名称的值和spring中ID的值做匹配,如果匹配成功则赋值springframework事务
如果匹配不成功,则会按照类型进⾏匹配,如果匹配不成功,则报错
如果有name属性,则会按照name属性的值和spring的bean中ID进⾏匹配,匹配成功,则赋值,不成功则报错以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论