由于在使用构造函数注入时,Bean的入参引用的对象必须已经准备就绪,而这里的Car类和Boss类都使用了构造函数注入,而且都互相引用了对方,因此会发生循环依赖问题,两者都会等待对方实例化,就会出现类似线程死锁的问题,容器将不能启动成功 。
工厂方法注入 非静态工厂方法:
public Car getCar() {Car car = new Car();return car;}
静态工厂方法:
public static Car getCar2() {Car car = new Car();return car;}
注入方式的考量 选择构造函数注入的理由: 1.构造函数注入可以保证一些重要的属性在Bean实例化好之前就设置好,避免因为一些重要属性没有提供而导致一个无用Bean实例的情况 2.不需要为每个属性都设置方法,减少方法的数量 3.可以更好的封装类变量,避免外部错误的调用 不选择构造函数注入的理由: 1.如果类的属性过多,bean标签下的-arg标签也会增多,可读性差 2.灵活性不强,如果在有些属性是可选的情况下,通过构造函数注入需要传入null作为默认值 3.不利于类的继承和扩展,因为子类也需要引用父类的构造函数 4.会造成循环依赖问题 部分注入参数介绍
1.当注入的属性包含了XML的特殊字符时,可以使用
2.引用其他Bean
通过ref标签引用其他的Bean,ref标签包含两个属性,bean和,bean属性表示引用当前容器中的Bean,如果没有,则引用父容器中的Bean;属性表示引用父容器中的Bean 。
父容器bean.xml:
子容器bean2.xml:
3.内部Bean
内部Bean和Java的匿名内部类相似,没有名字,也不能被其他Bean引用,只能在声明处为外部Bean提供实例注入
【Spring4-快速入门之在IOC容器中装配Bean】
4.null值
文章插图
通过标签为属性注入null值
New棉花糖>
5.级联属性
以圆点(.)的方式定义级联属性
- 超详细解读+快速入门 一文快速了解ClickHouse 战斗民族的开源搜索引擎
- 寄存器操作 8、stm32F103入门学习--点亮LED(向库函数操作迈进!)
- 用GitHub Copilot在Vs Code里快速写代码,最详细使用教程
- 小白入门必学 | 一文带你快速了解计算机视觉
- 腾讯游戏信用分怎么快速恢复
- 1 Python新手入门———条件判断
- 如何对Word表格进行快速计算
- 3 机器学习系列_逻辑回归应用之Kaggle泰坦尼克之灾
- 如何快速拿下科目二
- Windows Server入门系列31 利用LC5破解用户密码