SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-006-当构造函数有集合时的注入

本文内容纲要:SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-006-当构造函数有集合时的注入

一.当构造函数有集合时,只能用,不能用C-NAMESPACE

二、

1 package soundsystem.collections;

2

3 import java.util.List;

4

5 import soundsystem.CompactDisc;

6

7 public class BlankDisc implements CompactDisc {

8

9 private String title;

10 private String artist;

11 private List<String> tracks;

12

13 public BlankDisc(String title, String artist, List<String> tracks) {

14 this.title = title;

15 this.artist = artist;

16 this.tracks = tracks;

17 }

18

19 public void play() {

20 System.out.println("Playing " + title + " by " + artist);

21 for (String track : tracks) {

22 System.out.println("-Track: " + track);

23 }

24 }

25

26 }

(1)可以注入null,但运行会nullpointerException

1 <bean id="compactDisc" class="soundsystem.BlankDisc">

2 <constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />

3 <constructor-arg value="The Beatles" />

4 <constructor-arg><null/></constructor-arg>

5 </bean>

(2)注入list

<bean id="compactDisc" class="soundsystem.BlankDisc">

<constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />

<constructor-arg value="The Beatles" />

<constructor-arg>

<list>

<value>Sgt. Pepper's Lonely Hearts Club Band</value>

<value>With a Little Help from My Friends</value>

<value>Lucy in the Sky with Diamonds</value>

<value>Getting Better</value>

<value>Fixing a Hole</value>

<!-- ...other tracks omitted for brevity... -->

</list>

</constructor-arg>

(2)如果构造函数的集合参数的元素是对象,则用

public Discography(String artist, List<CompactDisc> cds) { ... }

<bean id="beatlesDiscography"

class="soundsystem.Discography">

<constructor-arg value="The Beatles" />

<constructor-arg>

<list>

<ref bean="sgtPeppers" />

<ref bean="whiteAlbum" />

<ref bean="hardDaysNight" />

<ref bean="revolver" />

...

</list>

</constructor-arg>

</bean>

(3)也可以注入set

It makes sense to use when wiring a constructor argument of type

java.util.List . Even so, you could also use the element in the same way:

<bean id="compactDisc" class="soundsystem.BlankDisc">

<constructor-arg value="Sgt. Pepper's Lonely Hearts Club Band" />

<constructor-arg value="The Beatles" />

<constructor-arg>

<set>

<value>Sgt. Pepper's Lonely Hearts Club Band</value>

<value>With a Little Help from My Friends</value>

<value>Lucy in the Sky with Diamonds</value>

<value>Getting Better</value>

<value>Fixing a Hole</value>

<!-- ...other tracks omitted for brevity... -->

</set>

</constructor-arg>

</bean>

There’s little difference between and . The main difference is that when

Spring creates the collection to be wired, it will create it as either a java.util.Set or

a java.util.List . If it’s a Set , then any duplicate values will be discarded and the

ordering may not be honored. But in either case, either a or a can be

wired into a List , a Set , or even an array.

本文内容总结:SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-006-当构造函数有集合时的注入

原文链接:https://www.cnblogs.com/shamgod/p/5233785.html

以上是 SPRING IN ACTION 第4版笔记-第二章WIRING BEANS-006-当构造函数有集合时的注入 的全部内容, 来源链接: utcz.com/z/296040.html

回到顶部