Spring Bean几种注入方式——setter(常用),构造器,注入内部Bean,注入集合,接口...

本文内容纲要:

- 1.1构造器注入

-    代码清单:构造器注入

-   代码清单:构造器配置

- 元素名

- 作用

- 优缺点

- 1.2使用setter注入

- 2.1 注入内部Bean

-   代码清单:内部Bean注入

- 代码清单:内部 bean 为基于 setter 注入进行配置的配置文件 Spring.xml 文件:

- property name对应pojo中的属性(类变量),ref关联到对应Bean的id (注意:ref关联的Bean一定要在Spring Ioc容器中定义,否则会报错)

- 代码清单:Pojo实体类(注意必须setter方法)

- 代码清单:Bean配置

- 测试结果:

依赖注入分为三种方式:

1.1构造器注入

    构造器通过构造方法实现,构造方法有无参数都可以。在大部分情况下我们都是通过类的构造器来创建对象,Spring也可以采用反射机制通过构造器完成注入,这就是构造器注入的原理。

   代码清单:构造器注入

1 package com.spring.chapter3;

2

3 public class Role {

4

5 private long id;

6 private String roleName;

7

8 public Role(long id,String roleName){

9 this.id=id;

10 this.roleName=roleName;

11

12 }

13 public void getCount(){

14 System.out.println("Role已被调用"+"\n"+"id:"+id+"\n"+"roleName:"+roleName);

15

16 }

17

18 }

  代码清单:构造器配置

1 <bean id="Role" class="com.spring.chapter3.Role">

2 <constructor-arg index="0" value="007"></constructor-arg>

3 <constructor-arg index="1" value="zhangqiang"></constructor-arg>

4 </bean>

元素名

作用

优缺点

constructor-arg
元素用于定义类构造方法的参数
注入简单,不宜参数过多
 index
用于定义对应类构造方法的参数位置
value
设置值

1.2使用setter注入

  setter注入是Spring中最主流的注入方法(常用),好处就不用多说了。原理也是通过反射注入,直接上代码。(注意对应的实体类属性必须实现set,get方法。如果实体类没有属性也会被注入)。

1 package com.spring.chapter3;

2

3 public class Role {

4

5 public long getId() {

6 return id;

7 }

8 public void setId(long id) {

9 this.id = id;

10 }

11 public String getRoleName() {

12 return roleName;

13 }

14 public void setRoleName(String roleName) {

15 this.roleName = roleName;

16 }

17 private long id;

18 private String roleName;

19

20 }

  Bean配置xml

1 <bean id="Role" class="com.spring.chapter3.Role">

2 </bean>

2.1 注入内部Bean

注入内部Bean跟setter注入是差不多的,不用多说直接看代码。

  代码清单:内部Bean注入

1 package com.spring.chapter3;

2

3 public class Role {

4

5 public int getId() {

6 return id;

7 }

8

9 public void setId(int id) {

10 this.id = id;

11 }

12

13 public String getRoleName() {

14 return RoleName;

15 }

16

17 public void setRoleName(String roleName) {

18 RoleName = roleName;

19 }

20

21 public DomePojo getDomePojo() {

22 return domePojo;

23 }

24

25 public void setDomePojo(DomePojo domePojo) {

26 this.domePojo = domePojo;

27 }

28

29 private DomePojo domePojo;  //注意这里是类变量

30 private int id;

31 private String RoleName;

32 public void getCount(){

33 System.out.println("我是Role类的方法");

34 }

35 }

代码清单:内部 bean 为基于 setter 注入进行配置的配置文件 Spring.xml 文件:

1  <bean id="DomePojo" class="com.spring.chapter3.DomePojo">

2

3 </bean>

4 <bean id="Role" class="com.spring.chapter3.Role">

5 <property name="id" value="007"></property>

6 <property name="RoleName" value="zhangqiang"></property>

7 <property name="DomePojo" ref="DomePojo"></property>

8 </bean>

 

property name对应pojo中的属性(类变量),ref关联到对应Bean的id (注意:ref关联的Bean一定要在Spring Ioc容器中定义,否则会报错)

2.2 注入集合

如果想传递多个值,如 Java Collection 类型 List、Set、Map 和 Properties,应该怎么做呢。为了处理这种情况,Spring 提供了四种类型的集合的配置元素,如下所示:

                  

元素描述
<list>它有助于连线,如注入一列值,允许重复。
<set>它有助于连线一组值,但不能重复。
<map>它可以用来注入名称-值对的集合,其中名称和值可以是任何类型。
<props>它可以用来注入名称-值对的集合,其中名称和值都是字符串类型。

代码清单:Pojo实体类(注意必须setter方法)

1 package com.spring.chapter4;

2

3 import java.util.List;

4 import java.util.Set;

5

6 public class Collection {

7 public Set getAddSet() {

8 return addSet;

9 }

10

11 public void setAddSet(Set addSet) {

12 this.addSet = addSet;

13 }

14

15 public List getAddList() {

16 return addList;

17 }

18

19 public void setAddList(List addList) {

20 this.addList = addList;

21 }

22

23 private Set addSet;

24 private List addList;

25

26 public void getCount(){

27 System.out.println("我是Role类的方法");

28 }

29 }

代码清单:Bean配置

1     <bean id="Collection" class="com.spring.chapter4.Collection">

2 <property name="addList">

3 <list>

4 <value>1</value>

5 <value>2</value>

6 <value>3</value>

7 <value>4</value>

8 </list>

9 </property>

10 <property name="addSet">

11 <set>

12 <value>6</value>

13 <value>7</value>

14 <value>8</value>

15 <value>9</value>

16 </set>

17 </property>

18 </bean>

19

测试结果:

Image

本文代码下载地址:https://files.cnblogs.com/files/ysource/springSetter%E7%AD%89%E4%BE%9D%E8%B5%96%E6%B3%A8%E5%85%A5.rar

本文内容总结:1.1构造器注入,   代码清单:构造器注入,  代码清单:构造器配置,元素名,作用,优缺点,1.2使用setter注入,2.1 注入内部Bean,  代码清单:内部Bean注入,代码清单:内部 bean 为基于 setter 注入进行配置的配置文件 Spring.xml 文件:,property name对应pojo中的属性(类变量),ref关联到对应Bean的id (注意:ref关联的Bean一定要在Spring Ioc容器中定义,否则会报错),代码清单:Pojo实体类(注意必须setter方法),代码清单:Bean配置,测试结果:,

原文链接:https://www.cnblogs.com/ysource/p/12349931.html

以上是 Spring Bean几种注入方式——setter(常用),构造器,注入内部Bean,注入集合,接口... 的全部内容, 来源链接: utcz.com/z/295998.html

回到顶部