public class User { private int id;
private String name;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class UserService {
private Set<User> userSet = new HashSet<User>();
private List<User> userList = new ArrayList<User>();
private Map<String,User> userMap = new HashMap<String,User>();

public Set<User> getUserSet() {
return userSet;
} public void setUserSet(Set<User> userSet) {
this.userSet = userSet;
} public List<User> getUserList() {
return userList;
} public void setUserList(List<User> userList) {
this.userList = userList;
} public Map<String, User> getUserMap() {
return userMap;
} public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
} public UserService(){

}
}<bean name="user" class="com.hiway.entity.User" scope="prototype">
<property name="id" value="123"></property>
<property name="name" value="Hiway"></property>
</bean>   <bean name="userService" class="com.hiway.entity.UserService" scope="prototype">
<property name="userSet">
<set>
<ref bean="user"/>
<ref bean="user"/>
<ref bean="user"/>
</set>
</property>
<property name="userList">
<list>
<ref bean="user"/>
<ref bean="user"/>
<ref bean="user"/>
</list>
</property>

<property name="userMap">
<map>
<entry key="1">
<ref bean="user"/>
</entry>
<entry key="2">
<ref bean="user"/>
</entry>
<entry key="3">
<ref bean="user"/>
</entry>
</map>
</property>
</bean>测试类:
UserService service = (UserService) context.getBean("userService");

System.out.println("userSet:===================");
Iterator it = service.getUserSet().iterator();
while(it.hasNext()){
User u = (User) it.next();
System.out.println(u);
}

System.out.println("userList:=================");
it = service.getUserList().iterator();
while(it.hasNext()){
User u = (User) it.next();
System.out.println(u);
}

System.out.println("userMap:==============");
it = service.getUserMap().entrySet().iterator();
while(it.hasNext()){
System.out.println(it.next());
}问题:我已经把com.hiway.entity.User的scope设置为prototype,在userSet里加了三个ref,可是为什么只打印出一个?
其中一次打印结果:
userSet:===================
com.hiway.entity.User@1fe88d
userList:=================
com.hiway.entity.User@1d36dfe
com.hiway.entity.User@1da669c
com.hiway.entity.User@186c730
userMap:==============
1=com.hiway.entity.User@17f242c
2=com.hiway.entity.User@1fd5e2
3=com.hiway.entity.User@12f9ee

解决方案 »

  1.   

    HashSet应该是用hashCode()和equals()比较对象是否相等在User对象中你没有实现这两个方法,所以你的3个User对象是相等的
      

  2.   


    我并没有重写hashCode  equals,那三个User对象肯定不相等的啊
    你是不是说反了?
      

  3.   


    实在不好意思,搞错了。确实很诡异的问题,脱离spring容器是对的
      

  4.   

    他的ref是根据name去取的吧 你把名字换一下试试撒