spring构造器候选
时间: 2023-07-12 16:58:46 浏览: 73
小米_spring1
在 Spring 中,构造函数注入是一种依赖注入的方式,可以使用构造器注入来满足依赖关系。构造器注入需要在类的构造方法上添加 `@Autowired` 注解,Spring 容器会自动匹配构造函数的参数类型和 Bean 对象,然后自动注入到构造函数中。
当一个类中存在多个构造函数时,Spring 如何选择合适的构造函数进行注入呢?这就需要用到构造器候选的概念。
Spring 会根据以下规则来选择构造器:
1. 如果某个构造函数上添加了 `@Autowired` 注解,则 Spring 会优先选择该构造函数进行注入。
2. 如果没有构造函数上有 `@Autowired` 注解,则 Spring 会选择参数列表最长的构造函数进行注入。
3. 如果有多个构造函数参数列表长度相同,则 Spring 会根据参数列表中的类型和名称来选择合适的构造函数。具体规则如下:
- 如果参数列表中存在与 Bean 对象类型一致的参数,则选择该构造函数进行注入。
- 如果参数列表中存在多个与 Bean 对象类型一致的参数,则选择与字段名称一致的参数进行注入。
- 如果参数列表中不存在与 Bean 对象类型一致的参数,则选择第一个参数名称与字段名称一致的参数进行注入。
需要注意的是,如果类中只有一个构造函数,且该构造函数没有参数或参数类型与 Bean 对象类型一致,则可以省略 `@Autowired` 注解,Spring 会自动选择该构造函数进行注入。
阅读全文