为什么 Spring 框架不允许自动装配原始类型?

Why Spring framework does not allow autowire primitive types?

根据 文档,它已被提及

it is by design

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

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

对于原语你可以这样做spring-bean-primitive-properties-when-using-component-and-autowired

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

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

A​​utowiring 只是在 ApplicationContext 中引用 现有 beans 的替代方法。

基元不是应用程序上下文中存在的 bean

它需要 instance/bean 而不是原始数据。