spring不能自动实例化beanSpringBean实例

解决方案 »

  1.   

    <!-- 配置DAO组件 -->
    <bean id="userDao" class="com.blog.dao.UserDaoImpl" />

    <!-- 配置业务逻辑组件 -->
    <bean id="userService" class="com.blog.service.UserServiceImpl">
    <property name="userDao">
    <ref bean="userDao"/>
    </property>
    </bean>

    <!-- 配置RegisterAction -->
    <bean id="register" class="com.blog.action.Register" scope="prototype">
    <property name="userService">
    <ref bean="userService"/>
    </property>
    </bean>

    <!-- 配置LoginAction -->
    <bean id="login" class="com.blog.action.Login" scope="prototype">
    <property name="userService">
    <ref bean="userService"/>
    </property>
    </bean>applicationContent.xml配置如上
    运行报错
      

  2.   

    那你 struts 配置文件怎么写的啊?是不是login ?
      

  3.   

    <action name="login" class="com.blog.action.Login">
             
             <result name="input">/login.jsp</result>
             <result name="success">/success.jsp</result>
         </action>
         
         <action name="register" class="com.blog.action.Register">
           <result name="input">/register.jsp</result>
             <result name="success">/success.jsp</result>
             <result name="error">/register_error.jsp</result>
         </action>
      

  4.   

    public class Login extends ActionSupport{
    private UserService userService;
    private String username;
    private String password; public UserService getUserService() {
    return userService;
    } public void setUserService(UserService userService) {
    this.userService = userService;
    } public String execute() throws Exception {
    User user = new User();

    user.setUsername(username);
    user.setPassword(password);
    //没有new一个对象时,报Exception occurred during processing request: null
    //userService = new UserServiceImpl();
    HttpServletRequest request = ServletActionContext.getRequest();
    //System.out.println(user.getUsername());
    if(userService.loginUser(user)){
    Map<String, Object> session = ActionContext.getContext().getSession();
    session.put("username", username);
    request.setAttribute("info", username+"登录成功!");
    System.out.println("hello!");
    return SUCCESS;
    }

    else
      return INPUT;
    }

    public String getUsername() {
    return username;
    } public void setUsername(String username) {
    this.username = username;
    } public String getPassword() {
    return password;
    }
    public void setPassword(String password) {
    this.password = password;
    }



    }
      

  5.   

    你struts的action 没交给spring管理?
      

  6.   

    你这是不是改源码了?,
    43行?重新运行后的错误行是哪个?哦,我把注释删了,报错行if(userService.loginUser(user))
      

  7.   

    如果你想将action交由spring管理,那么struts.xml的<action>中的class属性值不能再是Action的全限定类名,而是
    <bean id="login" class="com.blog.action.Login" scope="prototype">
            <property name="userService">
                <ref bean="userService"/>
            </property>
    </bean>中的id值"login".
      

  8.   

    dao没有创建可能是由于你的sessionFactory没有创建好,你把后台的异常信息看全吧。或贴上来。
      

  9.   

    9搂的回复应该是对的,你在action想通过spring注入使用userService,那么你在struts.xml中配置action的实现类的时候就应该使用spring自动生成的实例化类,而不是内部自己创建的实例。把struts.xml中的class的值改成login试试
      

  10.   

    请问“Action的全限定类名”这个是什么意思
      

  11.   

    <action name="login" class="com.blog.action.Login">这行有问题,class里现在不是直接指向具体的类路径,而是你在sptring里具体类对应的id,就是这个
    <!-- 配置LoginAction -->
        <bean id="login" class="com.blog.action.Login" scope="prototype">
            <property name="userService">
                <ref bean="userService"/>
            </property>
        </bean>
    解决办法:改为<action name="login" class="login">应该就可以了!