自动装配有哪些限制(需要注意)?
- 一定要声明set方法
- 覆盖: 你仍可以用 < constructor-arg >和 < property > 配置来定义依赖,这些配置将始终覆盖自动注入。
- 基本数据类型:不能自动装配简单的属性,如基本数据类型、字符串和类。 (手动注入还是可以注入基本数
据类型的 <property value=“” @Value) - 模糊特性:自动装配不如显式装配精确,如果有可能尽量使用显示装配。
所以更推荐使用手动装配(@Autowired(根据类型、再根据名字) ref=“” 这种方式 更加灵活更加清晰 )
额外补充
1、自动装配模式
- no
这是默认的自动装配模式。这意味着默认情况下没有自动装配。 - byName
byName模式根据bean的名称注入对象依赖项。在这种情况下,属性名称和bean名称必须相同。它在内部调用setter方法。 - byType
byType模式根据类型注入对象依赖项。因此属性名称和bean名称可以不同。它在内部调用setter方法。 - constructor
构造函数模式通过调用类的构造函数来注入依赖项。它会调用具有大量参数的构造函数。 - autodetect
从Spring 3开始不推荐使用。
自动装配的优点
- 它需要 更少的代码,因为我们不需要编写代码来显式注入依赖项。