SPRING IN ACTION 第4版笔记-第二章Wiring Beans-005-<constructor-arg>和c-namespace

1.

 1 package soundsystem;
 2 
 3 public class SgtPeppers implements CompactDisc {
 4 
 5   private String title = "Sgt. Pepper's Lonely Hearts Club Band";  
 6   private String artist = "The Beatles";
 7   
 8   public void play() {
 9     System.out.println("Playing " + title + " by " + artist);
10   }
11 
12 }

2.

 1 package soundsystem;
 2 import org.springframework.beans.factory.annotation.Autowired;
 3 
 4 public class CDPlayer implements MediaPlayer {
 5   private CompactDisc cd;
 6 
 7   @Autowired
 8   public CDPlayer(CompactDisc cd) {
 9     this.cd = cd;
10   }
11 
12   public void play() {
13     cd.play();
14   }
15 
16 }

一、-<constructor-arg>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

  <bean id="compactDisc" class="soundsystem.SgtPeppers" />
        
  <bean id="cdPlayer" class="soundsystem.CDPlayer">
    <constructor-arg ref="compactDisc" />
  </bean>

</beans>

二、c-namespace(3.0开始有)

(1)指定参数名称

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4   xmlns:c="http://www.springframework.org/schema/c"
 5   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 6 
 7   <bean id="compactDisc" class="soundsystem.SgtPeppers" />
 8         
 9   <bean id="cdPlayer" class="soundsystem.CDPlayer"
10         c:cd-ref="compactDisc" />
11 
12 </beans>

(2)指定参数顺序

<bean id="cdPlayer" class="soundsystem.CDPlayer"
c:_0-ref="compactDisc" />

(3)如查构造函数只有一个参数,则可以连顺序都不用指定

<bean id="cdPlayer" class="soundsystem.CDPlayer"
c:_-ref="compactDisc" />
原文地址:https://www.cnblogs.com/shamgod/p/5233662.html