首页 > 解决方案 > 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。

标签: javaspring

解决方案


从 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;
    }

    // ...

}

推荐阅读