Spring中为什么实体类不用注入?

多一点点 2012-01-30 10:30:56

刚学习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不用注入呢?
...全文
2717 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tan_cheng_ok 2013-03-11
  • 打赏
  • 举报
回复
spring 可以设置类的实例化是单例还是多例
NewMoons 2012-10-11
  • 打赏
  • 举报
回复
首先11楼解释的已经比较清楚。
楼主学东西不要形而上学,spring只需要注入需要注入的,有些实体业务上是从其它地方获得的,何必spring注入?
比如你说的例子一看就知道ssh框架,其中user实例应该是用户录入的,从页面表单传来的,是struts2帮你注入的。
abc0824 2012-10-11
  • 打赏
  • 举报
回复
11楼,分析的很到位
渭水飞熊 2012-10-11
  • 打赏
  • 举报
回复
要理解为什么不用注入,首先就清楚注入的目的是什么?如果不注入,在程序中要使用某个类对象的方法,则需要去new一个对象。然后我们调用其中的方法,众所周知“程序=算法+数据”。不失一般性,在面向对象开发中,类一般有两种,一种是功能类的,主要是完成一些业务操作。一种是数据类,主要是存储数据,比如POJO。我们数据提交上来后,自己组装PO(当然也有的框架可以帮我们组装好),然后调用功能类的方法去操作这些数据,完成相应功能。如果没有使用注入的方式注入这些功能类对象,则会有空指针的问题,希望说的能帮上楼主。
wei2253498 2012-10-11
  • 打赏
  • 举报
回复
实体bean注入 要hibernate有啥用
AslenG 2012-10-11
  • 打赏
  • 举报
回复 4
一帮人云亦云。。。你们难道没试过在spring配置文件中注入bean吗?没试过就没发言权,光说能自动创建。。。
你们有没有试过:当页面传递过来的参数没有加user.的时候,那个Action中的User是不会实例化的,比如页面传过来的参数是Action中的一个变量,那么这时就会发生User没有实例化的错误,没遇到过?这种情况的解决方法是在Action中判断User东西是否为null,是的话就实例化。但这种情况一多就蛋疼了。所以大家可以把bean注入spring配置文件中,这样程序已启动User就是实例化好的,这样就OK了。
lanhao124 2012-10-11
  • 打赏
  • 举报
回复 1
spring 管理的类都是单例吧,spring 管理model那不是所有的用户共用一个User对象,登陆的时候存储谁的呢?这可能么?我也刚学java,不知道对不对
woshiliubei3 2012-10-11
  • 打赏
  • 举报
回复 1
UserService是个工具类,你需要获取(也就是new)他的对象实例才能调用类内部的方法。
而User只是个POJO,是个存放数据的载体,并不需要获取(也就是new)他的对象实例,而是从外面传进来的。
所以UserService需要new一个,而User并不需。
而Spring的注入机制其实就是代替了new的这个过程(称为解耦),所以UserService需要注入,而User并不需要注入。
香蕉猪 2012-01-31
  • 打赏
  • 举报
回复
User自动创建了..
wnf2009 2012-01-31
  • 打赏
  • 举报
回复
user是数据
heboucheng 2012-01-31
  • 打赏
  • 举报
回复
如果在配置文件中配置了的话应该也会注入,没试过。
不过一般没这有这必要,
因为使用spring 主要就是降低系统的偶合度,而实体类一般都是因定不变的,
一般不会随需求去改变实体类。。。
chenguowan 2012-01-30
  • 打赏
  • 举报
回复
user是根据从表单传过来的数据来的,每个userbean都不一样,而service是一个固定类
  • 打赏
  • 举报
回复
不需要注入,人家的规范就是那样..
lg_asus 2012-01-30
  • 打赏
  • 举报
回复
嗯, user是页面中传过来的,是struts2自动管理的
小威 2012-01-30
  • 打赏
  • 举报
回复
因为user只是一个容器,用来接收页面传递的值,他会被struts2自动创建
而那个service不会被struts2自动创建和管理,只能交给spring管理

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧