SpringBean⼏种注⼊⽅式——setter(常⽤),构造器,注⼊内
部Bean,注⼊集。。。
依赖注⼊分为三种⽅式:
1.1构造器注⼊
构造器通过构造⽅法实现,构造⽅法有⽆参数都可以。在⼤部分情况下我们都是通过类的构造器来创建对象,Spring也可以采⽤反射机制通过构造器完成注⼊,这就是构造器注⼊的原理。
代码清单:构造器注⼊
1package com.spring.chapter3;
2
3public class Role {
4
5private long id;
6private String roleName;
7
8public Role(long id,String roleName){
9this.id=id;
11
12 }
13public 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>
spring framework扩展点元素名作⽤优缺点
constructor-arg元素⽤于定义类构造⽅法的参数
注⼊简单,不宜参数过多
index⽤于定义对应类构造⽅法的参数位置
value设置值
1.2使⽤setter注⼊
setter注⼊是Spring中最主流的注⼊⽅法(常⽤),好处就不⽤多说了。原理也是通过反射注⼊,直接上代码。(注意对应的实体类属性必须实现set,get⽅法。如果实体类没有属性也会被注⼊)。
1package com.spring.chapter3;
2
3public class Role {
4
5public long getId() {
6return id;
7 }
8public void setId(long id) {
9this.id = id;
10 }
11public String getRoleName() {
12return roleName;
13 }
14public void setRoleName(String roleName) {
16 }
17private long id;
18private String roleName;
19
20 }
Bean配置xml
1<bean id="Role" class="com.spring.chapter3.Role">
2</bean>
2.1 注⼊内部Bean
注⼊内部Bean跟setter注⼊是差不多的,不⽤多说直接看代码。
代码清单:内部Bean注⼊
1package com.spring.chapter3;
2
3public class Role {
4
5public int getId() {
6return id;
7 }
8
9public void setId(int id) {
10this.id = id;
11 }
12
13public String getRoleName() {
14return RoleName;
15 }
16
17public void setRoleName(String roleName) {
18 RoleName = roleName;
19 }
20
21public DomePojo getDomePojo() {
22return domePojo;
23 }
24
25public void setDomePojo(DomePojo domePojo) {
26this.domePojo = domePojo;
27 }
28
29private DomePojo domePojo; //注意这⾥是类变量
30private int id;
31private String RoleName;
32public void getCount(){
33 System.out.println("我是Role类的⽅法");
34 }
35 }
代码清单:内部 bean 为基于 setter 注⼊进⾏配置的配置⽂件 l ⽂件:
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⽅法) 1package com.spring.chapter4;
2
3import java.util.List;
4import java.util.Set;
5
6public class Collection {
7public Set getAddSet() {
8return addSet;
9 }
10
11public void setAddSet(Set addSet) {
12this.addSet = addSet;
13 }
14
15public List getAddList() {
16return addList;
17 }
18
19public void setAddList(List addList) {
20this.addList = addList;
21 }
22
23private Set addSet;
24private List addList;
25
26public 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
测试结果:
本⽂代码下载地址:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论