我对type1型依赖注入的粗浅理解
下面的这段代码是SpringGuide中的一个例子
public class MyServlet extends HttpServlet {
public void doGet(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
……
}
}
作者把这个Servlet的应用归为type1型的依赖注入。以前我曾经看过这个例子,不过当时没有怎么理解。
今天,开始仔细的学习的时候,好好的想了一下,觉得稍有理解。
对于一个Servlet来说,可能觉得,在用户请求到达的时候,其响应就完了,如果简单的看这个问题,那么就太简单了。作为我们来说需要知道所以然。
如果单纯的是一个类,调用一个方法do(String a,String b),提供两个参数,那也就正常了。因为你调用这个方法的时候,已经实例化了,有可能是你自己实例化的 new Object ().do("a,","b")。
但是你在请求到一个servlet的时候,却不需要去显式创建一个servlet的实例,然后再调用其doGet(request,response)方法,因为,你在请求到达之前,先到达容器,让后再到servlet,在到达servlet之前,并没有生成对应的request对象和response对象。所以此时,servlet并不知道要做什么。
问题来了,
request从哪来?
response从哪来?
是你封装的吗?
其实,此时的请求由容器接收,并封装和创建对应的request和response对象,然后把传入到servlet对象里面。
也就是说,在你动态的请求之前,这个依赖并不存在。
请求之后,容器封装之后的对象才有了依赖,这是个动态的依赖。然后才会注入到servlet里面。
这就是为什么是动态依赖,是依赖注入。
我对依赖的一点粗浅理解。
|----------------------------------------------------------------------------------------|
版权声明 版权所有 @zhyiwww
引用请注明来源 http://www.blogjava.net/zhyiwww
|----------------------------------------------------------------------------------------|