【问题标题】:Spring : how this field in controller is injected?Spring:控制器中的这个字段是如何注入的?
【发布时间】:2020-04-01 15:47:02
【问题描述】:

我有一个这样的休息控制器:

@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。

【问题讨论】:

标签: java spring


【解决方案1】:

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

    // ...

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-14
    • 2015-01-09
    • 1970-01-01
    • 2014-11-06
    • 2019-01-18
    • 2012-12-08
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多