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
相关产品推荐
相关产品推荐

