详解Spring中bean的几种注入方式

时间:2021-05-19

首先,要学习Spring中的Bean的注入方式,就要先了解什么是依赖注入。依赖注入是指:让调用类对某一接口的实现类的实现类的依赖关系由第三方注入,以此来消除调用类对某一接口实现类的依赖。

Spring容器中支持的依赖注入方式主要有属性注入、构造函数注入、工厂方法注入。接下来将为大家详细介绍这三种依赖注入的方式以及它们的具体配置方法。

1.属性注入

属性注入即通过setXXX( )方法注入bean的属性值或依赖对象。由于属性注入方式具有可选择性和灵活性高的特点,因此它也是实际开发中最常用的注入方式。

Spring首先会调用bean的默认构造函数实例化bean对象,然后再通过反射的方法调用set方法来注入属性值。

属性注入要求bean提供一个 默认的构造函数 ,并且得为需要注入的属性提供 set方法 。

TIps:所谓默认的构造函数,即不带参数的构造函数。如果类中没有自定义任何构造函数,则系统(JVM)会自动生成一个不带参的默认构造函数,如果类中显式的自定义了有参数的构造函数,则系统就不会在自动生成默认构造函数,需要自己手动再加一个无参的构造函数。

下面通过一个实例来演示Spring中bean的属性注入方式:

编写一个user类:

package com.Kevin.bean;/** * 创建一个类测试bean的属性注入方式 * @author Kevin * */public class User { private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; }}

配置文件:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://.Kevin.factorybean.Car" factory-method="createCar"></bean> </beans>

总结

Spring提供了三种可供选择的注入方式,但在实际应用中,我们究竟该选择哪种注入方式,并没有统一的标准,如下是一些可以参考的理由:

构造函数注入理由:

  • 构造函数保证重要属性预先设置;
  • 无需提供每个属性的setter方法,减少类的方法个数;
  • 可以更好地封装类变量,避免外部错误调用。
  • 属性注入理由:

  • 属性过多时,构造函数变的臃肿;
  • 构造函数注入灵活性不强,有时需要为属性注入null值;
  • 多个构造函数时,配置上产生歧义,复杂度升高;
  • 构造函数不利于类的继承和扩展;
  • 构造函数注入会引起循环依赖的问题。
  • 其实Spring为我们注入参数提供了这么多方法,那么这些方法必然有他们存在的道理,每个方法在某一问题上会有独特的优势,我们只需要按照我们具体的使用需求选择适合的方法来使用就好了,但一般不太推荐工厂方法注入。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章