【问题标题】:Why Spring framework does not allow autowire primitive types?为什么 Spring 框架不允许自动装配原始类型?
【发布时间】:2016-04-04 07:18:16
【问题描述】:

根据 文档已提及

这是设计的

我想了解这个设计背后可能的想法。

【问题讨论】:

  • 注入的 bean 需要有一个类,原始类型没有。但是,使用自动拆箱,您可以随意将它们作为对应的 Object 注入:Boolean、Integer、Double..

标签: spring java spring dependency-injection spring-ioc


【解决方案1】:

这是因为Autowiring 只是在 ApplicationContext 中引用现有 bean 的替代方法。它需要 beanclass,原语不是类,它与 Object 不同。这就是为什么你不能Autowire 原始类型。您可以使用原始类型(如 Integer、Double 等)的包装类来对此类类型使用自动装配,因为您现在指的是

【讨论】:

  • 那为什么不允许使用String呢?
【解决方案2】:

自动装配不能用于注入原始值和字符串值。它仅供参考。注入的引用需要有一个对象类。您可以使用包装器。即整数,布尔值。

对于原始的,你可以像spring-bean-primitive-properties-when-using-component-and-autowired那样做

【讨论】:

    【解决方案3】:

    您可以自动装配包装类,而不是自动装配原始类型 对于 int 类型 --> 使用 Integer

    【讨论】:

      【解决方案4】:

      Autowiring 只是在 ApplicationContext 中引用 现有 bean 的一种替代方法。

      原语不像 bean 那样存在于应用程序上下文中

      它需要一个实例/bean,而不是原语。

      【讨论】:

        猜你喜欢
        • 2011-07-21
        • 1970-01-01
        • 2023-03-21
        • 2013-10-30
        • 2015-11-14
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多