使用Spring @Autowired List的责任链

在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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值