我翻阅了一些关于Spring单例作用域的博客和spring文档,以及几乎所有的spring单例和DAO相关的问题。 我仍然不清楚如何将相同的对象注入到所有依赖它的类中。我已经了解到DAO需要为无状态。DAO类的spring单例作用域如何在内部工作
如果下面的DAO(具有主要用于清除混淆的实例变量的示例dao)类是使用默认的单例作用域定义的,并且每次都注入同一个对象,则可能存在部门为空并且因此不会设置部门价值的任何东西都会使用前一个对象值。
public class UserDAO{
int userId;
Spring userDepartment;
// getter setter methods for userId and userDepartment
public boolean addUserToUserDetailsTable(int uId,
String name, String address, String department){
// set userId
userId = uId;
if(department!=null)
userDepartment = department;
// write code to add user to user table
// TO DO
// save user department data
addUserToUserDepartmentTable(userId, userDepartment);
}
public void addUserToUserDepartmentTable(int uId,
String department){
/* Code to save department data */
}
}
所以如果不是使用DI,如果我手动调用DAO使用新的运营商这个问题不会在那里。
new UserDAO()。addUserToUserDetailsTable(id,“abc”,null);
上述混乱产生以下问题
如何春季创建和注入singelton豆,是不是真的有且只有一个它获取注入到所有调用的类对象。如果这是真的,那么重置DAO类之前的对象值的方式。
不会将实例变量的值保存在这里userId,userDepartment是否从多个类中调用同一个对象?无状态意味着类不能有实例变量。
是否在内部使用new object()来注入bean。
或者它创建一个DAO类的对象,并使该对象的多个克隆,我认为这是不可能的,因为DAO类没有实现clonnable。
请帮我解决上面的困惑。
您的示例代码有意义...谢谢。 – cjava