@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
         */
    }
}

问题解决。

总结

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

相关文章

  • SpringBoot项目如何将Bean注入到普通类中

    SpringBoot项目如何将Bean注入到普通类中

    这篇文章主要介绍了SpringBoot项目如何将Bean注入到普通类中,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • jackson使用@JsonSerialize格式化BigDecimal解决.00不显示问题

    jackson使用@JsonSerialize格式化BigDecimal解决.00不显示问题

    这篇文章主要介绍了jackson使用@JsonSerialize格式化BigDecimal解决.00不显示问题,本文直接给出实现代码,需要的朋友可以参考下
    2015-02-02
  • java蓝桥杯历年真题及答案整理(小结)

    java蓝桥杯历年真题及答案整理(小结)

    这篇文章主要介绍了java蓝桥杯历年真题及答案整理(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Java实战之飞翔的小鸟小游戏

    Java实战之飞翔的小鸟小游戏

    这篇文章主要介绍了Java实战之飞翔的小鸟小游戏,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 基于springEL表达式详解及应用

    基于springEL表达式详解及应用

    这篇文章主要介绍了springEL表达式详解及应用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Spring注解实现循环重试功能(适用场景分析)

    Spring注解实现循环重试功能(适用场景分析)

    这篇文章主要介绍了Spring注解实现循环重试功能,本篇主要简单介绍了Springboot中的Retryable的使用,主要的适用场景和注意事项,当需要重试的时候还是很有用的,需要的朋友可以参考下
    2023-04-04
  • 一文掌握MyBatis Plus的条件构造器方法

    一文掌握MyBatis Plus的条件构造器方法

    这篇文章主要介绍了MyBatis Plus的条件构造器,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • SpringBoot项目创建单元测试的流程步骤

    SpringBoot项目创建单元测试的流程步骤

    在日常开发的过程中,对自己的代码进行单元测试是个非常重要的过程,一方面可以最小范围的针对一个方法进行测试,提高测试的简便性以及测试的成本,本篇文章主要是为了总结一下如何优雅的在Springboot项目中使用单元测试去测试功能,需要的朋友可以参考下
    2024-11-11
  • springcloud 服务降级的实现方法

    springcloud 服务降级的实现方法

    这篇文章主要介绍了springcloud 服务降级的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • java导出csv方法实现讲解

    java导出csv方法实现讲解

    这篇文章主要介绍了java导出csv的方法,客户要求在项目中有导出CSV文件的功能,并且给出了如何在不知道如何在不知道对象类型(没有应用泛型)的List中如何得到对象的属性值,下面就详细说下这个功能是如何实现的
    2013-12-12

最新评论