刚学习sring求解!!!!!!!!!!!!!!!!!!!!!!!!!
public class SaveUserAction extends ActionSupport { private User user;

private UserService service; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}



public UserService getService() {
return service;
} public void setService(UserService service) {
this.service = service;
} @Override
public String execute() throws Exception {

service.save(user);
return SUCCESS;
}


}
上边的属性只有UserService在spring的配置文件中注入了,为什么实体类User不用注入呢?

解决方案 »

  1.   

    user是根据从表单传过来的数据来的,每个userbean都不一样,而service是一个固定类
      

  2.   

    因为user只是一个容器,用来接收页面传递的值,他会被struts2自动创建
    而那个service不会被struts2自动创建和管理,只能交给spring管理
      

  3.   

    嗯, user是页面中传过来的,是struts2自动管理的
      

  4.   

    如果在配置文件中配置了的话应该也会注入,没试过。
    不过一般没这有这必要,
    因为使用spring 主要就是降低系统的偶合度,而实体类一般都是因定不变的,
    一般不会随需求去改变实体类
      

  5.   

    一帮人云亦云你们难道没试过在spring配置文件中注入bean吗?没试过就没发言权,光说能自动创建
    你们有没有试过:当页面传递过来的参数没有加user.的时候,那个Action中的User是不会实例化的,比如页面传过来的参数是Action中的一个变量,那么这时就会发生User没有实例化的错误,没遇到过?这种情况的解决方法是在Action中判断User东西是否为null,是的话就实例化。但这种情况一多就蛋疼了。所以大家可以把bean注入spring配置文件中,这样程序已启动User就是实例化好的,这样就OK了。
      

  6.   

    实体bean注入 要hibernate有啥用
      

  7.   

    要理解为什么不用注入,首先就清楚注入的目的是什么?如果不注入,在程序中要使用某个类对象的方法,则需要去new一个对象。然后我们调用其中的方法,众所周知“程序=算法+数据”。不失一般性,在面向对象开发中,类一般有两种,一种是功能类的,主要是完成一些业务操作。一种是数据类,主要是存储数据,比如POJO。我们数据提交上来后,自己组装PO(当然也有的框架可以帮我们组装好),然后调用功能类的方法去操作这些数据,完成相应功能。如果没有使用注入的方式注入这些功能类对象,则会有空指针的问题,希望说的能帮上楼主。
      

  8.   

    首先11楼解释的已经比较清楚。
    楼主学东西不要形而上学,spring只需要注入需要注入的,有些实体业务上是从其它地方获得的,何必spring注入?
    比如你说的例子一看就知道ssh框架,其中user实例应该是用户录入的,从页面表单传来的,是struts2帮你注入的。
      

  9.   

    UserService是个工具类,你需要获取(也就是new)他的对象实例才能调用类内部的方法。
    而User只是个POJO,是个存放数据的载体,并不需要获取(也就是new)他的对象实例,而是从外面传进来的。
    所以UserService需要new一个,而User并不需。
    而Spring的注入机制其实就是代替了new的这个过程(称为解耦),所以UserService需要注入,而User并不需要注入。
      

  10.   

    spring 管理的类都是单例吧,spring 管理model那不是所有的用户共用一个User对象,登陆的时候存储谁的呢?这可能么?我也刚学java,不知道对不对
      

  11.   

    spring 可以设置类的实例化是单例还是多例