spring的三种注入方式:
1、属性注入
2、构造方法注入
3、工厂方法注入
属性注入:
属性注入需要注意的是在bean的配置时属性名称是setter方法的名字而不是字段名称,如:
<bean id="car" class="com.za.Car"> <property name="IDCard"><value>123</value></property> </bean>
而Java类:
Class Car{ private Integer iDCard; public void setIDCard(Integer iDCard){ this.iDCard=iDCard; } }
如果property属性中name写成了iDCard 当启动spring时就会报错
构造方法注入:
当一个类中只有一个有参构造并且入参类型不一致时:
Class Car{ private String name; private Double price; public Class(String name,Double price){ this.name = name; this.price = price; } //setter、getter... }
bean的xml配置:
<bean id="car" class="com.za.Car"> <constructor-arg type="java.lang.String" value="hongqi"/> <constructor-arg type="java.lang.Double" value="555555"> </bean>
当只有一个入参并且入参类型有重复时:
Class Car{ private String name; private String CarNo; private Double price public Class(String name,String CarNo,Double price){ this.name = name; this.CarNo= CarNo; this.price=price; } //setter、getter... }
此时bean的xml配置使用type就不可以了,要使用index来区分:
<bean id="car" class="com.za.Car"> <constructor-arg index="0" value="hongqi"/> <constructor-arg index="1" value="苏A00000"> <constructor-arg index="2" value="555555"> </bean>
当构造方法有重载并且入参类型重复时,这时使用type和index来结合使用加以区分(例子省略)
构造方法注入可能会出现的一种情况是:循环依赖问题,比如在Car的构造方法中依赖了Wheel类,而Wheel类的构造方法中也依赖了Car类,此时启动spring容器就会有问题。解决方法:修改bean代码把构造方法注入修改为属性注入就可以了。
工厂方法注入:
非静态工厂方法:
public CarFactory{ public Car creatCar(){ Car car = new Car(); car.setName("红旗"); return car; } }
bean配置:
<bean id="car" class="com.za.Car" factory-bean="carFactory" factory-method="creatCar"></bean> <bean id="carFactory class="com.za.CarFactory/>
因为是非静态的,所以要有一个工厂bean,在工厂注入时引用
静态工厂方法:
public CarFactory{ public static Car creatCar(){ Car car = new Car(); car.setName("红旗"); return car; } }
bean配置:
<bean id="car" class="com.za.CarFactory" factory-method="creatCar"/>
省去了工厂bean的配置
相关推荐
本篇主要介绍Spring中的三种注入方式,包括构造器注入、设值注入和接口注入。 首先,我们来看构造器注入。构造器注入是在创建对象时,通过构造器传递依赖对象。这种方式强制了对象在创建时就必须提供所有必要的依赖...
本篇主要介绍Spring中的三种注入方式,着重讲解在"Spring三种注入方式(二)"中的内容。我们将深入探讨setter注入,这是Spring中最常见的注入方式之一。 ### 一、setter注入 setter注入是通过Spring容器调用对象的...
本篇主要介绍Spring中的三种注入方式,包括构造器注入、设值注入和接口注入。 **一、构造器注入** 构造器注入是通过构造函数来传递依赖对象的一种方式。当类有多个构造函数时,Spring会使用带有最多参数的构造函数...
Spring 三种依赖注入方式 Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口...
下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`文件中定义Bean。例如,对于`Student`和`Teacher`类,我们分别创建`bean`标签...
Spring Boot 中的几种注入方法 在 Spring Boot 中,注入是一种非常重要的机制,用于将 bean 对象注入到其他 bean 对象中,以便实现松耦合和高内聚的设计目标。下面我们将对 Spring Boot 中的几种注入方法进行详细的...
Spring Boot引入了一种更智能的依赖注入方式——自动配置。自动配置是通过`@EnableAutoConfiguration`注解启动的,它根据项目中的类路径和特定条件自动配置Bean。例如,如果类路径下存在`MongoClient`的jar,Spring ...
本文将深入探讨Spring中的三种依赖注入方式,并结合源码分析其工作原理。 1. **构造器注入** 构造器注入是通过构造函数来传递依赖对象的。当创建一个类的新实例时,Spring容器会调用带有所需参数的构造函数,从而...
自动注入是Spring的一种便捷方式,它能自动匹配类型或名称来注入依赖。Spring会根据类型或bean的名称自动找到合适的依赖。类型注入默认是基于类型匹配的,而名称注入则需要指定`@Qualifier`注解来指定bean的名称。...
下面我们将详细探讨Spring 中的三种注入方式:接口依赖注入(Type1)、setter/getter 注入(Type2,也称为属性注入)和构造方法注入(Type3)。 1. **接口依赖注入(Type1)** 这种注入方式相对不常见,主要适用于...
本文将详细探讨Spring中的两种主要注入方式:构造器注入和setter注入,以及它们各自的特点和适用场景。 首先,让我们理解什么是依赖注入(Dependency Injection,简称DI)。在传统的编程模式中,一个类通常会直接...
总结,Spring的依赖注入提供了构造器注入、设值注入和接口注入三种方式,帮助开发者实现松耦合和高内聚的设计。根据项目需求和场景,选择合适的方式能有效提升代码质量。同时,结合源码阅读和使用工具,如IDEA的代码...
在Spring中,IOC的主要实现方式有两种:依赖注入(Dependency Injection,简称DI)和基于接口的配置。下面将对这两种方式进行详细阐述。 一、依赖注入(Dependency Injection) 1. **构造器注入**:通过构造函数来...
花了些时间做了一个实验,彻底弄懂了spring Annotation注入的方式。凡带有@Component,@Controller,@Service,@Repository 标志的等于告诉Spring这类将自动产生对象,而@Resource则等于XML配置中的ref,告诉spring此处...
总的来说,Spring的设值注入提供了一种灵活的方式,让我们可以在不修改bean代码的情况下,根据不同的环境或需求改变bean的属性值,从而更好地解耦组件,增强软件的可扩展性和适应性。在实际开发中,熟练掌握这一特性...
Spring Bean三种注入方式详解 在 Spring 框架中,Bean 的依赖注入是通过容器来管理和提供的。依赖注入有三种方式:使用属性的 setter 方法注入、使用构造器注入和使用 Filed 注入。 使用属性的 setter 方法注入 ...
详细介绍spring的三种注入方式,带有实例和图片
在Spring框架中,属性注入是核心特性之一,它允许我们通过依赖注入(Dependency Injection, DI)来管理对象的属性,而不是让对象自行创建或查找它们的依赖。这有助于提高代码的可测试性、可维护性和解耦性。下面将...