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
测试结果:

本文代码下载地址: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






