在Spring 3.1中,有一种方法可以自动填充类型化的List,这在您想在代码中稍微进行去耦和清理时非常方便。
为了向您展示它是如何工作的,我将实现一个简单的责任链,该责任链将为通过的用户打印一些问候。
让我们从我们拥有的(唯一的)域类(用户)开始:
package com.marco.springchain;
public class User {
private final String name;
private final char gender;
public User(String name, char gender) {
super();
this.name = name;
this.gender = gender;
}
public String getName() {
return name;
}
public char getGender() {
return gender;
}
}
然后,我们创建一个接口,该接口定义要在链中使用的命令对象的类型:
package com.marco.springchain;
public interface Printer {
void print(User user);
}
这是Printer实现的通用类(模板)。
org.springframework.core.Ordered
用于告诉AnnotationAwareOrderComparator我们希望如何对List进行排序。
如果不需要您的链来具有执行顺序,则无需实现Ordered接口并重写getOrder方法。
还要注意,这个抽象类返回Ordered.LOWEST_PRECEDENCE
,这是因为我希望一些打印机命令仅在链的末尾运行,并且我不在乎它们的执行顺序(我保证,以后一切都会更清楚!)。
GenericPrinter
这是我们的第一个真正的打印机命令。 我希望它在链中具有绝对优先级,因此顺序为HIGHEST_PRECEDENCE
。
package com.marco.springchain;
import org.springframework.core.Ordered;
import org.springframework.stere