我有一个请求范围的 bean,并且需要访问 HttpServletResponse 和 HttpServletRequest 对象。
我需要在构造函数中访问这些对象,因此属性自动装配不是一个选项。
我做了以下事情:
@Component
@Scope("request")
public class MyClass{
@Autowired(required=true)
public MyClass(HttpServletRequest request, HttpServletResponse response) {
// do stuff I need to do in the constructor
}
}
这给了我以下错误:
未找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException: com.foo.bar.MyClass.()
根据此错误消息,它正在寻找一个不存在的无参数默认构造函数。我自动装配了构造函数并专门将“required”设置为 true,因此注入器应该选择此构造函数。由于 bean 是请求范围,这应该可以工作,但事实并非如此。
有任何想法吗?
据我了解,您将无法使用标准方法自动装配 HttpServletResponse 对象。检查 WebApplicationContextUtils 类的 registerWebApplicationScopes 方法。可解析的依赖项只有 HttpSession.class 和 HttpSession.class 。
检查自定义解决方案here http://forum.springsource.org/showthread.php?88804-Request-scoped-bean-can-t-get-injected-HttpServletResponse-but-HttpServletRequest-ok .
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)