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

Spring Boot中@Service等注解类的构造方法执行时机问询

Spring Boot中@Service/@RestController/@Configuration类的构造方法执行时机

被@Service、@RestController、@Configuration注解的类都属于Spring容器管理的Bean,它们的构造方法执行时机和Bean的生命周期直接绑定:

  • 在Bean实例化阶段执行:Spring容器启动并完成Bean定义解析后,会触发Bean的实例化流程,此时就会调用类的构造方法——不管构造方法是否带参数。如果构造方法有参数,Spring会自动从容器中查找匹配的依赖Bean注入,比如你提供的示例里,MessageController的构造方法就注入了RabbitMQProducer实例。
  • 不同作用域下的差异:
    • 默认的单例Bean:Spring容器启动过程中就会完成实例化,构造方法在容器启动时执行。
    • 原型作用域的Bean:每次从Spring容器中获取Bean实例时,才会执行构造方法创建新实例。
  • 和初始化方法的先后顺序:构造方法是Bean创建的第一步,执行时机早于@PostConstruct注解标记的初始化方法,也早于InitializingBean接口的afterPropertiesSet方法。

代码示例

@RestController
@RequestMapping("/api/v1")
public class MessageController {
    
    private RabbitMQProducer producer;

    public MessageController(RabbitMQProducer producer) {
        super();
        this.producer = producer;
    }

    @GetMapping("/publish")
    public ResponseEntity<String> sendMessage(@RequestParam("message") String message)
    {
        producer.sendMessage(message);
        return ResponseEntity.ok("message sent to the rabbitmq");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:05:07