@Bean
@Scope(scopeName="prototype")
public Store stringStore(){
return new StringStore();
}
@Test
public void test12() {
for(int i=0;i<2;i++){
StringStore store = super.getBean("stringStore");
System.out.println(store.getClass().hashCode());
}
}
输出了两个同样的hashcode。
@Scope(scopeName="prototype") 这行代码修改成@Scope("prototype")即可
在一个类中,通过多次访问这个对象的时候,HashCode总是一样的,但是如果在两个类中一用这个对象,然后分别这两个类中的引用
TestScope这个对象,则在控制台上输出的HashCode就不一样了;但是如果把@Scope("prototype")去掉,则哪怕是在两个类中打印的这两个hashCode也是一样的;还有一点就是如果类上面加有@Scope("prototype")注释,这个时候如果是两个用户登陆访问引用TestScope这个类的时候,打印出的TestScope的hashCode也是一样的。
不是应该用
@Scope(name="prototype")
么?
输出的是store.getClass().hashCode(),要store.hashCode()才会不一样
为什么 》???
是我最后写错了!基础知识不扎实,╮(╯▽╰)╭