【发布时间】:2012-02-26 00:30:24
【问题描述】:
来自 app-context.xml:
<bean id="userDao" class="com.vaannila.dao.UserDAOImpl">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>
<bean name="MyServiceT" class="com.s.server.ServiceT">
<property name="userDao" ref="userDao"/>
</bean>
在ServiceT.java内部:
private UserDAO userDao;
public void setUserDao(UserDAO userDao){
this.userDao = userDao;
}
问题是:setUserDao 在服务器启动时被调用,但当我调用我的 doGet 方法时:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
writer.write("hello");
}
userDao 为空。 我在 setUserDao 方法中放置了一个断点,在 doGet 方法中放置了另一个断点,发现它不一样……原因是什么?我该如何解决? 谢谢!
【问题讨论】:
-
请发布代码,说明如何将 bean 注入 servlet。
-
同时发布您的
doGet方法体 -
你不会在某个地方给
new MyServiceT()打电话吧? -
它是由应用程序上下文注入的(参见上面的“MyServiceT”bean)。我不必调用 new MyServiceT() 因为它是一个 servlet。只需使用浏览器调用 doGet (27.0.0.1:8888/MyServicT)
标签: spring servlets dependency-injection