春天 3.2。当我这样做时一切正常:
@Controller
public class MyController {
@Inject
Provider<MyBean> provider;
@RequestMapping("/chart")
public void getChart(HttpServletResponse resp) {
provider.get();
}
}
但是当我将 MyBean 设置为 getChart 的参数时它不起作用:
@Controller
public class MyController {
@RequestMapping("/chart")
public void getChart(HttpServletResponse resp, MyBean myBean) {
// No such method MyBean.<init>()
}
}
所以 Spring 尝试创建一个新的 myBean 实例,而不是使用已经绑定的实例。
配置:
@Configuration
public class Config {
@Inject
@Bean @Scope("request")
public MyBean provideMyBean(MyOtherBean myOtherBean) {
return myOtherBean.getMyBean();
}
}
如果我将控制器请求设置为范围,并将 @Inject/@Autowired 添加到getChart()
. 然后它找不到 HttpServletResponse 实例 (NoSuchBeanDefinitionException),尽管在请求范围内肯定有一个。
也许它只是没有在 Spring 中实现?