刚学习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不用注入呢?
而那个service不会被struts2自动创建和管理,只能交给spring管理
不过一般没这有这必要,
因为使用spring 主要就是降低系统的偶合度,而实体类一般都是因定不变的,
一般不会随需求去改变实体类
你们有没有试过:当页面传递过来的参数没有加user.的时候,那个Action中的User是不会实例化的,比如页面传过来的参数是Action中的一个变量,那么这时就会发生User没有实例化的错误,没遇到过?这种情况的解决方法是在Action中判断User东西是否为null,是的话就实例化。但这种情况一多就蛋疼了。所以大家可以把bean注入spring配置文件中,这样程序已启动User就是实例化好的,这样就OK了。
楼主学东西不要形而上学,spring只需要注入需要注入的,有些实体业务上是从其它地方获得的,何必spring注入?
比如你说的例子一看就知道ssh框架,其中user实例应该是用户录入的,从页面表单传来的,是struts2帮你注入的。
而User只是个POJO,是个存放数据的载体,并不需要获取(也就是new)他的对象实例,而是从外面传进来的。
所以UserService需要new一个,而User并不需。
而Spring的注入机制其实就是代替了new的这个过程(称为解耦),所以UserService需要注入,而User并不需要注入。