java - Spring:控制器中的这个字段是如何注入的?
问题描述
我有一个这样的休息控制器:
@Slf4j
@RestController
@RequestMapping(...)
public class MyController {
private MyService service;
public MyController(MyService service){
this.service = service;
}
服务类是一个组件:
@Component
public class MyService{
...
}
当我运行程序时,该service
字段被正确注入。但是它是如何注入的(在构造函数上归档的 ni 上也没有自动装配注释)?
我正在使用 SpringBoot 2.0。
解决方案
从 Spring 4.3 版本开始。根据文档(https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-spring-beans-and-dependency-injection),如果 bean 有单个构造函数,则可以省略 @Autowired 注释。
如果 bean 有一个构造函数,则可以省略 @Autowired,如下例所示:
@Service
public class DatabaseAccountService implements AccountService {
private final RiskAssessor riskAssessor;
public DatabaseAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
// ...
}
推荐阅读
- sql - 如何在 postgresql 中没有公共字段的情况下从另一个表中插入列及其值?
- esp32 - 带 LCD 的服务器 Esp32
- java - 什么样的优化JIT应用于while循环
- ios - 从 UICollectionView 中删除单元格而不重新加载
- c# - 如何为 2 个不同的变量设置计时器?
- mysql - 上传多个文件后如何得到响应?
- java - 为什么 for(T t : this) 有效,它是什么意思?
- regex - 如何在 Excel 中验证正则表达式
- camera - 有人可以告诉我在哪里可以阅读激光雷达相机交叉校准的主题
- flutter - Flutter webrtc PeerConnection 无法在 have-remote-offer 或 have-local-pranswer 之外的状态下创建答案