Spring中依赖注入有三种注入方式:
一、构造器注入;
二、设值注入(setter方式注入);
三、Feild方式注入(注解方式注入)。
一、构造器注入
构造器注入顾名思义就是在程序组件中实现构造器,构造器可以是一个也可以是多个。废话不多说,直接上代码。
- package cn.glzaction.service.impl;
- import java.util.List;
- import cn.glzaction.service.interfaces.PersonDaoIF;
- import cn.glzaction.service.interfaces.PersonServiceIF;
- public class PersonServiceBean implements PersonServiceIF{
- //自定义类
- private PersonDaoIF personDaoBean;
- //String类型
- private String name;
- //集合类型
- private List list;
- //构造器
- public PersonServiceBean(PersonDaoBean personDaoBean,String name,List list){
- this.personDaoBean = personDaoBean;
- this.name = name;
- this.list = list;
- }
- //方法,用于显示
- public void display(){
- personDaoBean.add();
- System.out.println(name);
- System.out.println(list);
- }
- }
上面的代码中构造器要注入三个参数,同时这三个参数也是三种不同的类型,自定义类、String类型,集合类型,其中自定义类PersonDaoBean 具体的实现我们这里就不累述了,因为这不是重点。下面我们再来看一下在Spring的配置文件中如何来配置。
- <bean id="personDao" class="cn.glzaction.service.impl.PersonDaoBean"></bean >
- <!--构造器方式注入-->
- <bean id="personService" class="cn.glzaction.service.impl.PersonServiceBean">
- <constructor-arg index="0" type="cn.glzaction.service.impl.PersonDaoBean" ref="personDao"/>
- <constructor-arg index="1" type="java.lang.String" value="glzaction"/>
- <constructor-arg index="2" type="java.util.List">
- <list>
- <value>list1</value>
- <value>list2</value>
- <value>list3</value>
- </list>
- </constructor-arg>
- </bean>
java代码如何实现构造器我想大家一定都很清楚,否则的话就有点讲不过去了,呵呵,所以这里我也就不加以说明了,主要说一下上面的xml配置。id为“personDao”的bean是PersonServiceBean的私有属性,它的注入是采用无参构造器的注入方式注入的,这也不详细说明。主要说一下id为“personService”类的构造器注入。<coustructor-arg>是构造器标签元素,通过设定它的属性可以往构造器传递参数,index属性值表示要设定的参数在构造器形参中的索引顺序,例如上面的配置,list是第三个参数,所以它对应的索引为2,index是可选属性,所谓可选并不是说在任何情况下都可以不使用,要视具体情况而定,type为参数的类型,这个也是可选参数。还有两个很重要的属性就是ref和value,如果注入的是bean,就要使用ref,ref的值就是对应的bean。如果注入的是基本类型或者string类型就用value,直接将对应的值填入即可。
二、设值注入(setter方式注入)
设值注入就是通过setXxxx方法将bean注入到组件中,自定义类如下
- package cn.glzaction.service.impl;
- import cn.glzaction.service.interfaces.PersonDaoIF;
- import java.util.*;
- public class PersonDaoBean implements PersonDaoIF {
- private String name;
- private Integer id;
- private List list;
- private Map map;
- public void setName(String name) {
- this.name = name;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public void setList(List list) {
- this.list = list;
- }
- public void setMap(Map map) {
- this.map = map;
- }
- @Override
- public void add() {
- // TODO Auto-generated method stub
- System.out.println(map);
- System.out.println(list);
- System.out.println(id);
- System.out.println(name);
- }
- }
采用设置注入只要有setter方法即可,但是有时由于编程习惯也会讲getter方法引进,但是要清楚:设值注入与getter方法无关。这里还有一点需要注意,那就是能使用基本类型,如果非要使用基本类型的话就要使用其对应的包装类型,如上面使用的是Integer而不是int。Spring的xml配置如下:
- <bean id="personDao" class="cn.glzaction.service.impl.PersonDaoBean">
- <property name="name" type="java.lang.String" value="glzaction"/>
- <property name="id" type="java.lang.Integer" value="1"/>
- <property name="list" type="java.util.List">
- <list>
- <value>list1</value>
- <value>list2</value>
- <value>list3</value>
- </list>
- </property>
- <property name="map" type="java.util.Map">
- <map>
- <entry key="key1" value="value1"></entry>
- <entry key="key2" value="value2"></entry>
- </map>
- </property>
- </bean>
设值注入采用的是<property>标签元素,其中的name属性对应的是要注入的变量名,type属性值对应的该变量的类型,可以是自定义类或者包装类型。value属性对应的是相应的值,还有一个ref属性,该属性值对应的是bean。
注入数组
使用list <beans> <bean id="at" class="test.array.ArrayTest"> <property name="names"> <list> <value>aaa</value> <value>bbb</value> </list> </property> </bean> </beans> 或者逗号分开 <beans> <bean id="at" class="test.array.ArrayTest"> <property name="names"> <value>aaa,bbb</value> </property> </bean> </beans>
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
本篇主要介绍Spring中的三种注入方式,包括构造器注入、设值注入和接口注入。 **一、构造器注入** 构造器注入是通过构造函数来传递依赖对象的一种方式。当类有多个构造函数时,Spring会使用带有最多参数的构造函数...
下面我们将详细探讨Spring 中的三种注入方式:接口依赖注入(Type1)、setter/getter 注入(Type2,也称为属性注入)和构造方法注入(Type3)。 1. **接口依赖注入(Type1)** 这种注入方式相对不常见,主要适用于...
本篇主要介绍Spring中的三种注入方式,着重讲解在"Spring三种注入方式(二)"中的内容。我们将深入探讨setter注入,这是Spring中最常见的注入方式之一。 ### 一、setter注入 setter注入是通过Spring容器调用对象的...
本文将详细探讨Spring中的两种主要注入方式:构造器注入和setter注入,以及它们各自的特点和适用场景。 首先,让我们理解什么是依赖注入(Dependency Injection,简称DI)。在传统的编程模式中,一个类通常会直接...
Spring提供了多种注入方式,包括set注入、构造注入和自动注入,让我们逐一深入探讨。 1. **Set注入** Set注入是最常见的注入方式,它通过setter方法来设置对象的依赖。首先,你需要在类中声明需要注入的属性,并...
本资料“Spring中你不知道的注入方式编程开发技术共6页.pdf”深入探讨了一些不常见但实用的Spring注入方式。尽管描述中提到的文件是一个压缩包,但从其标题我们可以推测其内容可能包括以下几点: 1. **构造器注入**...
Spring框架是Java开发中广泛使用的依赖注入(Dependency Injection,简称DI)容器,它极大地提高了代码的可测试性和可维护性。...理解并掌握这些注入方式,对于高效地使用Spring框架进行开发至关重要。
Spring提供两种主要的自动注入方式:`byName`和`byType`,以及更推荐的`@Autowired`注解。 - `byName`:根据Bean的属性名查找相同名称的Bean进行注入。 - `byType`:如果Bean的属性类型只有一个匹配的Bean,那么...
Spring Boot引入了一种更智能的依赖注入方式——自动配置。自动配置是通过`@EnableAutoConfiguration`注解启动的,它根据项目中的类路径和特定条件自动配置Bean。例如,如果类路径下存在`MongoClient`的jar,Spring ...
Spring 三种依赖注入方式 Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口...
Spring 的依赖注入方式有 setter 注入、构造方法注入和接口注入。依赖注入的目标是在代码之外管理程序组建间的依赖关系。 1. Spring 注入方式有 setter 注入、构造方法注入和接口注入。其中,setter 注入和构造方法...
本文将深入探讨Spring中的依赖注入方式,包括构造器注入、设值注入和接口注入。 **一、构造器注入** 构造器注入是通过在类的构造函数中传入依赖对象来实现的。Spring容器在创建对象时,会调用带有相应依赖的构造...
本篇主要介绍Spring中的三种注入方式,包括构造器注入、设值注入和接口注入。 首先,我们来看构造器注入。构造器注入是在创建对象时,通过构造器传递依赖对象。这种方式强制了对象在创建时就必须提供所有必要的依赖...
Spring Boot 中的几种注入方法 在 Spring Boot 中,注入是一种非常重要的机制,用于将 bean 对象注入到其他 bean 对象中,以便实现松耦合和高内聚的设计目标。下面我们将对 Spring Boot 中的几种注入方法进行详细的...
要用注解注入方式,还需要在applicationContext.xml文件加入一行代码: <context:component-scan base-package="Mode"></context:component-scan> //表示在包mode下面的类将扫描带有@Component,@Controller,@Service...
本文将深入探讨Spring中的三种依赖注入方式,并结合源码分析其工作原理。 1. **构造器注入** 构造器注入是通过构造函数来传递依赖对象的。当创建一个类的新实例时,Spring容器会调用带有所需参数的构造函数,从而...
详细介绍spring的三种注入方式,带有实例和图片
Spring支持两种主要的注入方式:XML配置和注解配置。随着Java的发展,注解方式逐渐成为主流,因为它更简洁、直观。在Spring中,我们通常使用`@Autowired`、`@Qualifier`、`@Resource`等注解来进行依赖注入。 - `@...
spring注入配置文件,使用注解注入的
我们在开发过程中经常会发生spring注入错误或失败的情况,其实Web服务器端在Action、dao、service包之内是很容易实现的,在这些包之外实现spring注入就不容易了,总是出错,其实根本原因是无法获得相应的spring上...