一个简单的SPRING配置,一个简单的SERVLET, 
配置好了SPRING的service等,然后给SERVLET注入一个bean,发现能注入(TOMCAT启动的时候发现能SET进去),但是调用的一直是NULL,不知道是什么原因,望高手指点.下面是相关代码。 SERVLET代码 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; 
        } SPRING_APPLICATION.XML <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> 
就是这个问题,不知道为什么用的时候是NULL,同样的方法在SPRINGmvc中就不是NULL

解决方案 »

  1.   

    error log勒,猫启动时是不注入任何实例的把,在要用到的时候才请求容器然后被set,<property   name= "proxyInterfaces "> 的class勒,
    <value> com.sos.service.UserService </value>放到id= "userservice "后class=
      

  2.   

    userservice.getaallStudent();(这一句在运行中发现是null) 
    竟然获取不到值..就找下这个 GET 方法..其次你看看配置的文件路径是否正确...大小写要区分好...仔细检查下..
      

  3.   

    谢谢楼上2位的回答 因为现在是在做一个ACEGI的验证,没法交给SPRING容器处理 才想单独写一个类去实现验证。 
    这边是获取用户信息的代码 Java code
    <b:bean id="userDetailsService" class="com.sos.security.UserDetailsSerivceImpl"></b:bean>Java code
    public class UserDetailsSerivceImpl extends BaseAction implements org.springframework.security.userdetails.UserDetailsService{
        private UserService userService;
        public UserDetails loadUserByUsername(String username)
            throws UsernameNotFoundException,
                DataAccessException {
            // TODO Auto-generated method stub
            
    //        HttpServletRequest request;
    //        ServletContext   servletContext   =   request.getSession().getServletContext();
    //        ApplicationContext   ctx   =   WebApplicationContextUtils.getWebApplicationContext(servletContext);
    //        UserService userservice =(UserService) ctx.getBean("userservice");
            com.sos.hibernate.User userinfo=(com.sos.hibernate.User) userService.getStudentInfo(username);//这边需要一个SERVICE ,但是实在是不知道怎么注入.//
            if(userinfo==null){
                throw new UsernameNotFoundException(username + " 不存在");
            }
            List <GrantedAuthority> authsList=new ArrayList<GrantedAuthority>();
            for(Roles role : userinfo.getRoles()){
                authsList.add(new GrantedAuthorityImpl(role.getName()));
            }
            User userdetail = new User(userinfo.getUsername(), userinfo.getPassword(), true, 
                    true, true, true, authsList.toArray(new GrantedAuthority[authsList.size()]));
            return userdetail;
        }
    }
      

  4.   

    //        HttpServletRequest request;
    //        ServletContext  servletContext  =  request.getSession().getServletContext();
    //        ApplicationContext  ctx  =  WebApplicationContextUtils.getWebApplicationContext(servletContext);
    //        UserService userservice =(UserService) ctx.getBean("userservice")
    我们以前是用这个获取的
      

  5.   

    HttpServletRequest request;
    如果初始化?
      

  6.   

    <bean   id= "userservice "   parent= "txProxyTemplate ">应改为 
    <bean   id= "userservice"   parent= "txProxyTemplate">
    多空格了