Spring框架 引入@Resource注解报空指针的解决

 更新时间:2021年11月17日 15:26:23   作者:HoneyVS痞子  
这篇文章主要介绍了Spring框架 引入@Resource注解报空指针的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

引入@Resource注解报空指针

最近刚开始学习Spring框架,在使用注解@Resource时,无论怎么应用都报空指针,主要原因是JDK版本不支持,

解决方案

1、在maven配置文件pom.xml文件中引入依赖

org.apache.tomcat
tomcat-annotations-api
9.0.13

2、更换本地JDK版本,最好1.8以上,注意1.9JDK版本不支持,有BUG

spring项目无法引入@Resource注解

问题

在spring项目中引入@Resource注解的时候,有红色下划线错误,而且输入注解的时候不能出现自动代码补全。

解决办法

Spring项目中缺少javax.annotation包的依赖。在maven配置文件pom.xml中加入依赖。

<!-- https://mvnrepository.com/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="http://www.springframework.org/schema/context"       
 http://www.springframework.org/schema/context         
 http://www.springframework.org/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的值做匹配,如果匹配成功则赋值

如果匹配不成功,则会按照类型进行匹配,如果匹配不成功,则报错

如果有name属性,则会按照name属性的值和spring的bean中ID进行匹配,匹配成功,则赋值,不成功则报错

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现无向图的示例详解

    Java实现无向图的示例详解

    边没有方向的图称为无向图,直观来说,若一个图中每条边都是无方向的,则称为无向图。本文将通过示例详细讲解Java如何实现无向图,需要的可以参考一下
    2022-04-04
  • Spring自定义注解实现接口版本管理

    Spring自定义注解实现接口版本管理

    这篇文章主要介绍了Spring自定义注解实现接口版本管理,RequestMappingHandlerMapping类是与 @RequestMapping相关的,它定义映射的规则,即满足怎样的条件则映射到那个接口上,需要的朋友可以参考下
    2023-11-11
  • springboot集成mybatisplus的详细步骤

    springboot集成mybatisplus的详细步骤

    MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生,这篇文章主要介绍了springboot四步集成mybatisplus,需要的朋友可以参考下
    2022-10-10
  • spring boot整合Shiro实现单点登录的示例代码

    spring boot整合Shiro实现单点登录的示例代码

    本篇文章主要介绍了spring boot整合Shiro实现单点登录的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Spring+SpringMVC+MyBatis深入学习及搭建(二)之MyBatis原始Dao开发和mapper代理开发

    Spring+SpringMVC+MyBatis深入学习及搭建(二)之MyBatis原始Dao开发和mapper代理开发

    这篇文章主要介绍了Spring+SpringMVC+MyBatis深入学习及搭建(二)之MyBatis原始Dao开发和mapper代理开发,需要的朋友可以参考下
    2017-05-05
  • 详解Springboot 注入装配到IOC容器方式

    详解Springboot 注入装配到IOC容器方式

    今天通过实例代码给大家介绍了Springboot 注入装配到IOC容器方式,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,感兴趣的朋友跟随小编一起看看吧
    2021-10-10
  • 详解MyBatis的动态SQL实现原理

    详解MyBatis的动态SQL实现原理

    MyBatis提供了强大的动态SQL语句生成功能,以应对复杂的业务场景,本篇文章将结合MyBatis解析SQL语句的过程对MyBatis中对<if>,<where>,<foreach>等动态SQL标签的支持进行分析,需要的朋友可以参考下
    2023-07-07
  • Spring中的InitializingBean接口源码解析

    Spring中的InitializingBean接口源码解析

    这篇文章主要介绍了Spring中的InitializingBean接口源码解析,InitializingBean接口为Bean初始化提供了一种方式,实现InitializingBean接口的Bean,在BeanFactory设置其所有属性后会调用其afterPropertiesSet()方法,需要的朋友可以参考下
    2024-02-02
  • Springboot使用jsp具体案例解析

    Springboot使用jsp具体案例解析

    这篇文章主要介绍了Springboot使用jsp具体案例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • mybatis的mapper.xml中resultMap标签的使用详解

    mybatis的mapper.xml中resultMap标签的使用详解

    这篇文章主要介绍了mybatis的mapper.xml中resultMap标签的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论