@Inject注解和@Named注解注入失败

 更新时间:2026年05月21日 16:51:31   作者:成为大佬先秃头  
在学习Spring框架时,按照官网介绍的JSR-333标准注释(依赖注入)操作,但运行时找不到bean并报错,后发现是pom文件中版本不对,将版本降低后,问题解决,总结了个人经验,原来是不同版本的包名不同导致问题发生

问题发现

在学习spring框架的时候,官方介绍Spring支持JSR-330标准注释(依赖注入)。然后按照官网的方式去操作。

pom文件:

        <dependency>
            <groupId>jakarta.inject</groupId>
            <artifactId>jakarta.inject-api</artifactId>
            <version>2.0.1</version>
        </dependency>

示例代码如下:

@Named
public class B{}
@Named
public class A{

    @Inject
    private B b;

    public B getB() { return b; }
    @Inject
    public void setB(B b) { this.b = b; }

    public static void main(String[] args) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.example");
        A bean = applicationContext.getBean(A.class);
        System.out.println(bean.b);
        /** Output:
         *  No qualifying bean of type 'com.example.A' available
         */
    }
}

运行直接找不到bean,报错。

问题解决

后面发现官网介绍的版本好像不一样,难道是这个原因(不是吧!!),然后把pom文件版本换低点。

        <dependency>
            <groupId>jakarta.inject</groupId>
            <artifactId>jakarta.inject-api</artifactId>
            <version>1.0</version>
        </dependency>

项目都报红了,发现原先的包名报错了,于是重新引入才发现问题。

  • 2.0.1版本的包名对应jakarta.inject.Named;
  • 1.0版本的包名对应javax.inject.Inject;

至此问题解决,运行一下:

@Named
public class B{}
@Named
public class A{
    @Inject
    private B b;

    public static void main(String[] args) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.example");
        A bean = applicationContext.getBean(A.class);
        System.out.println(bean.b);
        /** Output:
         *  com.example.B@9225652
         */
    }
}

问题解决。

总结

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

相关文章

  • Java网络编程基础用法详解

    Java网络编程基础用法详解

    网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来,本文将带大家详细了解Java的网络编程,文中有相关的代码示例,需要的朋友可以参考下
    2023-05-05
  • 解读JVM的生命周期是怎么样的

    解读JVM的生命周期是怎么样的

    JVM的生命周期包括启动、运行和终止三个阶段,启动阶段包括创建JVM实例、加载和初始化核心类库、加载main方法所在的类和初始化类,运行阶段包括执行main方法、类加载、字节码执行、内存管理、线程管理和异常处理,终止阶段包括正常终止、异常终止和外部终止
    2025-03-03
  • 详解Java JDK动态代理

    详解Java JDK动态代理

    这篇文章主要介绍了Java JDK动态代理的相关资料,帮助大家更好的理解和学习Java 代理的有关知识,感兴趣的朋友可以了解下
    2020-08-08
  • SpringMVC + jquery.uploadify实现上传文件功能

    SpringMVC + jquery.uploadify实现上传文件功能

    文件上传是很多项目都会使用到的功能,SpringMVC当然也提供了这个功能。不过小编不建议在项目中通过form表单来提交文件上传,这样做的局限性很大。下面这篇文章主要介绍了利用SpringMVC + jquery.uploadify实现上传文件功能的相关资料,需要的朋友可以参考下。
    2017-06-06
  • SpringBoot实现不同接口指定上传文件大小的具体步骤

    SpringBoot实现不同接口指定上传文件大小的具体步骤

    这篇文章主要介绍了在Spring Boot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于接口自定义值,确保验证逻辑正确执行,需要的朋友可以参考下
    2025-08-08
  • Java中的OpenJDK使用原理

    Java中的OpenJDK使用原理

    这篇文章主要介绍了Java中的OpenJDK使用原理,OpenJDK是Java的开发工具包,关于Java为什么要使用它文章作简单介绍,感兴趣的朋友可以参考一下
    2022-06-06
  • SpringBoot中如何使用Assert进行断言校验

    SpringBoot中如何使用Assert进行断言校验

    Java 提供了内置的 assert 机制,而 Spring 框架也提供了更强大的 Assert 工具类来帮助开发者进行参数校验和状态检查,下面我们就来看看SpringBoot中如何使用Assert进行断言校验吧
    2025-07-07
  • 在IDEA中集成maven详细流程图示例

    在IDEA中集成maven详细流程图示例

    最近利用两天时间学习了MyBatis以及maven,避免经典的学过就忘记,我打算做出点总结以便日后复习,当然如果能帮到需要的人也是极好的,需要的朋友可以参考下
    2021-06-06
  • Java NumberFormat格式化float类型的bug

    Java NumberFormat格式化float类型的bug

    今天小编就为大家分享一篇关于Java NumberFormat格式化float类型的bug,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • jenkins自动构建SpringCloud流程

    jenkins自动构建SpringCloud流程

    文章介绍了如何使用Jenkins和docker-compose自动部署SpringCloud和Vue项目,首先,下载并安装Jenkins,并配置Jenkins以自动启动,然后,配置GitLab插件和NodeJS插件,以便可以从GitLab仓库中获取代码并构建,接下来,创建一个Jenkins任务来构建Vue项目
    2025-02-02

最新评论