Spring中未用@Autowired注入的KafkaTemplate为何能在方法中使用?
为什么未使用@Autowired也能正常注入KafkaTemplate?
这是因为Spring 4.3及以上版本支持隐式的构造函数自动装配,具体到你的代码逻辑如下:
- 你的
TransactionsListener类标注了@Service,属于Spring容器管理的Bean。 - 这个类只有一个带参数的构造函数,Spring会自动识别这个构造函数,并从容器中查找匹配类型的
KafkaTemplate<Long, Order>和AccountRepository实例,通过构造函数传递进去完成注入。 - 构造函数里已经把传入的实例赋值给了成员变量
kafkaTemplate和repository,所以后续在listen方法里自然能正常使用这些实例。
简单总结:只要Spring管理的Bean只有一个构造函数,就不需要在构造函数或成员变量上添加@Autowired注解,Spring会自动完成构造函数注入。
内容的提问来源于stack exchange,提问作者techie11
相关产品推荐
相关产品推荐

