日期:2014-05-17  浏览次数:20662 次

Spring注入
做一个简单的IOC注入:但就是注不进去,dataSource,userManager都报空指针(applicationContext.xml读入内存没有问题),具体代码如下:
页面中用一个连接访问到servlet,如下:
其中已经配置了dataSource和userManager的set方法
Java code

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
        dataSource.getConnection();
        } catch (SQLException e) {}
        userManager.addUser(null);        
    }


applicationContext.xml
XML code

<!-- 配置连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName">
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <property name="url">
            <value>jdbc:mysql://localhost/assignment</value>
        </property>
        <property name="username">
            <value>root</value>
        </property>
        <property name="password">
            <value>root</value>
        </property>
    </bean>
    
    <!-- Servlet中配置UserManager -->
    <bean id="userManager" class="com.dao.impl.UserManagerImpl" />
    
    <bean name="/addUserServlet" class="com.servlet.addUserServlet">
        <property name="dataSource" ref="dataSource"></property>
        <property name="userManager" ref="userManager"></property>
    </bean>


web.xml中:
XML code

<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:applicationContext.xml</param-value>
  </context-param>
  
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>



望高手们给看看。急~~~~~~~~~谢谢

------解决方案--------------------
呵呵, 配置问题。

<!-- Servlet中配置UserManager -->
<bean id="userManager" class="com.dao.impl.UserManagerImpl" />

<bean name="/addUserServlet" class="com.servlet.addUserServlet">
<property name="dataSource" ref="dataSource"></property>
<property name="userManager" ref="userManager"></property>
</bean>
===============================================
addUserServlet是在web.xml配置的, 一个请求过来, 是由JSP容器初始化了这个servlet, 所以执行的servlet跟spring配置的那个servlet没点关系, 自然就空指针了呵呵。


------解决方案--------------------
探讨
楼主,你的dataSource和userManager根本就没有注入进来,所以在调用
dataSource.getConnection()和userManager.addUser()就报空指针异常

在servlet中输出一下System.out.println(userManagerImpl)值是null