Spring MVC在构造函数中注入`Environment`,但不在请求处理程序方法中注入

dfty9e19  于 2023-03-28  发布在  Spring
关注(0)|答案(1)|浏览(160)

我有一个名为MyController的Spring MVC @Controller。我可以在其构造函数中注入Spring Environment

public MyController(Environment environment) {
  …
}

但是,如果我尝试将相同的Environment注入到请求处理程序中,它会失败:

@GetMapping
public String getFoo(Environment environment)

错误消息为:
No primary or single unique constructor found for interface org.springframework.core.env.Environment
我注意到,我可以在处理程序中注入HTTP servlet请求,没有问题:

public String getFoo(HttpServletRequest request)

为什么我可以在控制器构造函数中注入Environment,而不能在处理程序方法中注入?
在文档中,我可以从哪里获得只能在一个地方或另一个地方注入的东西的列表?

fnvucqvd

fnvucqvd1#

“注解控制器”

  • “处理程序方法”
  • “方法参数”是spring-web(/-webflux)的 * 非常特定 * 的部分,由(非常)特定的“转换器,过滤器,处理程序,适配器,(等等)”处理和填充,并且(应该)符合链接的(版本特定;(文件。

而“dependency injection”,auto-wiring(as Environment)是“spring infrastructure”中非常通用的部分(spring-context,-beans,-core)。在顶部!:)

相关问题