以下是目前的代码,不知道是否可以有更好的写法封装优化以下代码,让调用者只关注逻辑实现就好。配置自动订阅所有的实现,当前代码是封装成一个starter @Data public class Subscription { private final String topic; private final Class messageType; private final Consumer consumer; } @FunctionalInterface public interface SubscriptionCustomizer { Subscription customize(); } @Component public class SubscriptionInitializer { @Autowired private List> customizers; public void registerSubscriber(SubscriptionCustomizer subscriber) { Subscription customize = subscriber.customize(); RedisUtil.subscribe(customize.getTopic(), customize.getMessageType(), customize.getConsumer()); } @PostConstruct public void registerAllSubscribers() { customizers.forEach(this::registerSubscriber); } } public class RedisUtil { public static void publish(String topic, T message, Consumer consumer) { publish(topic, message); consumer.accept(message); } } 以下是目前的调用方法 @Component public class MySubscriber1 implements SubscriptionCustomizer { @Override public Subscription customize() { return new Subscription("mySubscriber1", String.class, message -> { System.out.println("message = "+ message + " from mySubscriber1"); }); } } @Component public class MySubscriber2 implements SubscriptionCustomizer { @Override public Subscription customize() { return new Subscription("mySubscriber2", String.class, message -> { System.out.println("message = "+ message + " from mySubscriber2"); }); } } @Test public void test_redisson_subscribe(){ RedissonHelper.publish("mySubscriber1", "Hello Redis!"); RedissonHelper.publish("mySubscriber2", "Hello Redis!"); }