@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() {
baseOrder.sort(AnnotationAwareOrderComparator.INSTANCE);
}
}