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

关于SPRING注入的bean等于null的问题
一个简单的SPRING配置,一个简单的SERVLET,
配置好了SPRING的service等,然后给SERVLET注入一个bean,发现能注入(TOMCAT启动的时候发现能SET进去),但是调用的一直是NULL,不知道是什么原因,望高手指点.下面是相关代码。

SERVLET代码
[code=Java]
public   class   Javaservice   extends   HttpServlet   {
private   UserService   userservice;
public   void   doGet(HttpServletRequest   request,   HttpServletResponse   response)
                throws   ServletException,
                        IOException   {
                System.out.print( "f ");
                userservice.getaallStudent();(这一句在运行中发现是null)
                response.setContentType( "text/html ");
                PrintWriter   out   =   response.getWriter();
}
        public   UserService   getUserservice()   {
                System.out.println( "get------------------------------------ ");
                return   userservice;
        }

        public   void   setUserservice(UserService   userservice)   {
                System.out.println( "set------------------------------------ ");(这一句在TOMCAT启动时发现正常,能注入值)
                this.userservice   =   userservice;
        }
[/code]
SPRING_APPLICATION.XML
[code=Java]
<bean   id= "userservice "   parent= "txProxyTemplate ">
<property   name= "target "> <ref   bean= "userserviceImpl "/> </property>
<property   name= "proxyInterfaces ">
<value> com.sos.service.UserService </value>
</property>
</bean>
<bean   id= "userserviceImpl "   class= "com.sos.service.UserServiceImpl ">
<property   name= "userdao "> <ref   bean= "userdao "/> </property>
</bean>
<bean   id= "userdao "   class= "com.sos.hibernate.UserDAO ">
<property   name= "sessionFactory "> <ref   bean= "sessionFactory "/> </property>
</bean>


<bean   id= "Javaservice "   class= "com.sos.action.Javaservice ">
<property   name= "userservice "> <ref   bean= "userservice "/> </property>
</bean>
[/code]

就是这个问题,不知道为什么用的时候是NULL,同样的方法在SPRINGmvc中就不是NULL

------解决方案--------------------
这个问题是这样的,你在Spring的配置文件中配置的Javaservice 不是你访问页面是处理url的Javaservice。

所以你看到Spring给你的Javaservice设置了userservice,但实际访问的时候却是null了。

建议:把你的Servlet改写成Spring的Controller