视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
spring注入方式
2025-09-29 22:42:31 责编:小OO
文档
Spring三种bean注入方式

博客分类:

∙spring

javaspringbean注入方式依赖注入 

Spring中依赖注入有三种注入方式:

一、构造器注入;

二、设值注入(setter方式注入);

三、Feild方式注入(注解方式注入)。

 

一、构造器注入

     构造器注入顾名思义就是在程序组件中实现构造器,构造器可以是一个也可以是多个。废话不多说,直接上代码。

 

Java代码  

1.package cn.glzaction.service.impl;  

2.  

3.import java.util.List;  

4.  

5.import cn.glzaction.service.interfaces.PersonDaoIF;  

6.import cn.glzaction.service.interfaces.PersonServiceIF;  

7.  

8.public class PersonServiceBean implements PersonServiceIF{  

9.  

10.//自定义类  

11.    private PersonDaoIF personDaoBean;  

12.//String类型  

13.    private String name;  

14.//集合类型    

15.    private List list;  

16.      

17.//构造器     

18.    public PersonServiceBean(PersonDaoBean personDaoBean,String name,List list){  

19.        this.personDaoBean = personDaoBean;  

20.        this.name = name;  

21.        this.list = list;  

22.    }  

23.//方法,用于显示  

24.    public void display(){  

25.        personDaoBean.add();  

26.        System.out.println(name);  

27.        System.out.println(list);  

28.    }  

29.}  

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的配置文件中如何来配置。

 

Xml代码  

1.  

2.  

3.  

4.  

5.      

6.      

7.      

8.          

9.            list1  

10.            list2  

11.            list3  

12.          

13.      

14.  

    

         list1

         list2

         list3

    

  

 

      java代码如何实现构造器我想大家一定都很清楚,否则的话就有点讲不过去了,呵呵,所以这里我也就不加以说明了,主要说一下上面的xml配置。id为“personDao”的bean是PersonServiceBean的私有属性,它的注入是采用无参构造器的注入方式注入的,这也不详细说明。主要说一下id为“personService”类的构造器注入。是构造器标签元素,通过设定它的属性可以往构造器传递参数,index属性值表示要设定的参数在构造器形参中的索引顺序,例如上面的配置,list是第三个参数,所以它对应的索引为2,index是可选属性,所谓可选并不是说在任何情况下都可以不使用,要视具体情况而定,type为参数的类型,这个也是可选参数。还有两个很重要的属性就是ref和value,如果注入的是bean,就要使用ref,ref的值就是对应的bean。如果注入的是基本类型或者string类型就用value,直接将对应的值填入即可。

 

二、设值注入(setter方式注入)

设值注入就是通过setXxxx方法将bean注入到组件中,自定义类如下

 

Java代码  

1.package cn.glzaction.service.impl;  

2.  

3.import cn.glzaction.service.interfaces.PersonDaoIF;  

4.import java.util.*;  

5.  

6.public class PersonDaoBean implements PersonDaoIF {  

7.  

8.    private String name;  

9.      

10.    private Integer id;  

11.      

12.    private List list;  

13.      

14.    private Map map;  

15.      

16.    public void setName(String name) {  

17.        this.name = name;  

18.    }  

19.    public void setId(Integer id) {  

20.        this.id = id;  

21.    }  

22.    public void setList(List list) {  

23.        this.list = list;  

24.    }  

25.    public void setMap(Map map) {  

26.        this.map = map;  

27.    }  

28.  

29.    @Override  

30.    public void add() {  

31.        // TODO Auto-generated method stub  

32.        System.out.println(map);  

33.        System.out.println(list);  

34.        System.out.println(id);  

35.        System.out.println(name);  

36.    }  

37.}  

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配置如下:

 

Xml代码  

1.  

2.      

3.      

4.      

5.          

6.            list1  

7.            list2  

8.            list3  

9.          

10.      

11.      

12.          

13.              

14.              

15.          

16.      

17.  

    

         list1

         list2

         list3

    

    

        

        

    

 设值注入采用的是标签元素,其中的name属性对应的是要注入的变量名,type属性值对应的该变量的类型,可以是自定义类或者包装类型。value属性对应的是相应的值,还有一个ref属性,该属性值对应的是bean。下载本文

显示全文
专题