文章目录
- 内容总结
- 实例化
内容总结
实例化
Spring 自行创建 Bean 的规则如下
- 默认使用无参构造方法, 只有一个有参时用有参, 有多个有参时报错
- 多个有参, 且其中一个上有 @Autowired 注解: 用有 @Autowired 注解的那个, 且 Spring 自动注入参数值. 注意 @Primary/@Order/Ordered 等无此效果
- 当类是延迟加载或原型作用域时, 可以使用 getBean(String name, Object… args) 或 BeanDefinition.getConstructorArgumentValues().addGenericArgumentValue(new XxxObject()) 手动指定构造方法, 找不到则报错
- 让 Spring 自动选择构造方法以及参数值
- XML 时, autowire=“constructor”
- Annotation 时, BeanDefinition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR)