springMVC 杜绝依赖注入HttpServletRequest/Response

    @Autowired
    public HttpServletRequest request;
    @Autowired

public HttpServletResponse response; 以上的写法是错误的,HttpServletRequest/Response应当在方法请求的时候,,参数请求的

因为Request 和 Response 都是针对一次请求的

如果你只用@Autowire 或者 @Resource 注解,依赖都是在应用启动时注入的,当你应用启动的时候请求还没来呢,哪儿来的 Request和Response对象啊。 所以当你需要Request 和Response对象时,需要将其放到controller的方法的参数中,这样每次请求时,Spring MVC框架就会自动将HttpServeletRequest 或 HttpServeletResponse对象注入。

PS:Request对象表示一次请求,里面包含了本次请求的所有信息,包括Http Header和 Body, Response对象表示对请求的响应,可以设置响应的header和body

================================== 修改 在Spring MVC中,bean的scope有singleton, prototype, request, session等级别 request级别表示每次http请求时都会创建新的对象,在spring mvc中,如果依赖了HttpServletRequest 和 HttpServletResponse对象,就会在每次请求时重新计算依赖,创建新示例

你可能感兴趣的:(springMVC 杜绝依赖注入HttpServletRequest/Response)