举例若对于以下 xml 配置:
    <bean id="jcqConsumer" class="com.jcloud.jcq.spring.demo.consumer.JCQConsumer" init-method="start" destroy-method="shutdown">
        <!-- 消费者 -->
        <property name="consumer" ref="consumer" />
        <!-- 订阅的topic和对应的消息监听器的map -->
        <property name="topicMessageListenerMap">
            <map>
                <entry key="test-message-proxy">
                    <bean class="com.jcloud.jcq.spring.demo.consumer.DefaultMessageListener" />
                </entry>
            </map>
        </property>
        <!-- 订阅的topic和对应的过滤条件的map -->
        <property name="topicFilterExpressionMap">
            <map>
                <!-- 过滤条件为null -->
                <entry key="test-message-proxy">
                    <null/>
                </entry>
            </map>
        </property>
    </bean>
修改为的配置注解类为:
    @Bean(initMethod = "start", destroyMethod = "shutdown")
    public JCQConsumer jcqConsumer(Consumer consumer, DefaultMessageListener defaultMessageListener) {
        JCQConsumer jcqConsumer = new JCQConsumer();
        // 消费者
        jcqConsumer.setConsumer(consumer);
        // 订阅的topic和对应的消息监听器的map
        Map<String, MessageListener> topicMessageListenerMap = new HashMap<>();
        topicMessageListenerMap.put("test-message-proxy", defaultMessageListener);
        jcqConsumer.setTopicMessageListenerMap(topicMessageListenerMap);
        // 订阅的topic和对应的过滤条件的map
        Map<String, FilterExpression> topicFilterExpressionMap = new HashMap<>();
        topicFilterExpressionMap.put("test-message-proxy", null);
        jcqConsumer.setTopicFilterExpressionMap(topicFilterExpressionMap);
        System.out.println(topicFilterExpressionMap.get("test-message-proxy"));

        return jcqConsumer;
    }
说明
  1. JCQConsumer为项目中自定义的类,其中定义了 start() 与 shutdown() 方法,在 配置类中使用注解@Bean(initMethod = "start", destroyMethod = "shutdown")标注
  2. bean的id 为方法名,class 为方法的返回值类型
  3. property 属性中若有 ref 项,应该添加到该 方法的入口参数中 ,如上的 <property name="consumer" ref="consumer" /> 在配置类方法中应该添加参数Consumer consumer,这里注意 consumer 之前应该已经通过 @Bean 已添加到容器中

参考:https://blog.csdn.net/dawn2134/article/details/90940175

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐