日期:2014-05-17  浏览次数:20873 次

ioc 注入空值
我的web 项目的action,service,impl层都有一个都有一个user 属性 这三层都交由spring管理注入user对象,

比如我一个用户登陆,把用户登陆信息传到impl中从数据库获取到数据在封装成user对象,赋值给user,impl

里不为空,其他层取出user里的属性却为空,

通过一定的测试,在数据库查询前三层的user指向的是同一个对象,但查询后通过赋值impl的user所指对对象发生改变,

而其他各层却为变,这就造成了,其他层赋值不成功。

spring 默认就是单例,出现这种情况是什么原因,怎样解决,

小弟在线等,麻烦了

各位哥哥姐姐,雪地里跪求!!!!!

------解决方案--------------------
public void getUser(String sql)这份方法,为什么不是直接返回User呢?
你从db中查询出来的是entity的对象,直接返回User即可。
public User getUser(String sql)

这样,你子controller中,调用的时候,
你看看是否值,应该会有的。
------解决方案--------------------
我建议你User不要在Spring中注入,因spring 默认就是单例,所以你是无法改变他的引用的,只能改变引用所指向的值,你从新在impl 里通过user.set*()给属性赋值,其他层能获取,其实改变的就是值;但就是通过user对象赋值,这样是不允许的,因为spring 默认就是单例,你拿到的其实还是Spring注入的Null;最好是impl,service,action,一层一层把User传回去!