You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中@Bean标注方法内部代码未执行问题求助

Spring Boot中@Bean标记方法内部代码未执行问题

我遇到了Spring Boot里用@Bean标记的方法内部代码完全没执行的情况,预期流程是先创建Example实例,再执行workClass方法,但实际没走方法里的逻辑。

示例代码

@Component("example")
public class Example {

    private Consumer<String> exampleHandler = new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    };

    @Bean
    public WorkClass workClass(Example example){
        // 此处代码未执行
        example.exampleHandler.accept("Hello");
        return new WorkClass();
    }
}

实际项目对应方法代码

@Bean
public DefaultMQPushConsumer canalSyncConsumer(CanalSyncConsumerConfig canalSyncConsumerConfig) throws MQClientException {
    RPCHook rpcHook = new AclClientRPCHook(new SessionCredentials(mqProperties.getAccessKey(), mqProperties.getSecretKey()));
    DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(null, "GID_MEMBER_CENTER_CANAL_SYNC_GROUP", rpcHook);
    consumer.setNamesrvAddr(mqProperties.getNamesAddr());
    final String subE = StringUtils.join(MONITOR_TABLE_NAMES, "||");
    consumer.subscribe("mq_data_mid_platform_sync", subE);
    consumer.registerMessageListener(canalSyncConsumerConfig.consumerHandler);
    consumer.start();
    return consumer;
}

排查方向及解决方法

  • 分离@Component和@Bean定义:不要在被@Component标记的类里定义@Bean方法,把@Bean方法移到独立的@Configuration类中。示例里Example既是组件又包含Bean定义,容易触发循环依赖,导致Spring跳过Bean创建。
  • 检查扫描范围:确认启动类的@SpringBootApplication注解扫描路径覆盖了当前类所在包,没有被exclude属性排除。
  • 排查重复Bean定义:检查项目中是否有其他地方定义了同名的WorkClass或DefaultMQPushConsumerBean,Spring可能会优先加载其他定义,跳过当前方法。可以给@Bean指定唯一名称,比如@Bean("canalSyncConsumerCustom")。
  • 检查条件注解:确认当前类或@Bean方法上没有@Conditional相关注解(如@ConditionalOnProperty、@ConditionalOnMissingBean),这类注解可能导致Spring判断无需创建该Bean。
  • 查看启动日志:检查项目启动日志,是否存在Bean初始化异常(比如依赖缺失、配置错误),如果前置依赖Bean创建失败,当前@Bean方法会被跳过。
  • 实际项目额外检查:确认CanalSyncConsumerConfig是否成功注入,mqProperties的配置是否正确加载,这些依赖的异常会直接导致当前@Bean方法不执行。

内容的提问来源于stack exchange,提问作者cuckoocity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 14:37:33