SpringBean注入,根据@Order注解排序

127 阅读1分钟
@Slf4j
public abstract class BaseOrder {
   
    /**
     * 检查
     */
    public abstract boolean check(Order order);
}
@Order(0)
@Component
public class Order0 extends BaseOrder {
    
    @Override
    public boolean check(Order order) {
        log.info("库存检查");
        // 业务逻辑...
    }
}
@Order(1)
@Component
public class Order1 extends BaseOrder {

    @Override
    public boolean check(Order order) {
        log.info("活动检查");
        // 业务逻辑...
    }
}
@Order(2)
@Component
public class Order2 extends BaseOrder {

    @Override
    public boolean check(Order order) {
        log.info("优惠卷检查");
        // 业务逻辑...
    }
}
@Component
public class OrderDemo {

    @Autowired
    private List<BaseOrder> baseOrder;

    @PostConstruct
    void init() {
        // 根据Order注解升序排序
        baseOrder.sort(AnnotationAwareOrderComparator.INSTANCE);
        // 业务逻辑...
    }
}