为了账号安全,请及时绑定邮箱和手机立即绑定

我使用了@Scope(“prototype”),为什么测试结果还是单例的

@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。



正在回答

6 回答

@Scope(scopeName="prototype") 这行代码修改成@Scope("prototype")即可

0 回复 有任何疑惑可以回复我~
#1

蓝烟amber 提问者

并没有什么用,这种只是简化写法,本质上跟我题目中的是一样的。
2017-06-16 回复 有任何疑惑可以回复我~

在一个类中,通过多次访问这个对象的时候,HashCode总是一样的,但是如果在两个类中一用这个对象,然后分别这两个类中的引用

TestScope这个对象,则在控制台上输出的HashCode就不一样了;但是如果把@Scope("prototype")去掉,则哪怕是在两个类中打印的这两个hashCode也是一样的;还有一点就是如果类上面加有@Scope("prototype")注释,这个时候如果是两个用户登陆访问引用TestScope这个类的时候,打印出的TestScope的hashCode也是一样的。


0 回复 有任何疑惑可以回复我~

不是应该用

@Scope(name="prototype")

么?

0 回复 有任何疑惑可以回复我~

输出的是store.getClass().hashCode(),要store.hashCode()才会不一样

0 回复 有任何疑惑可以回复我~

为什么 》???

0 回复 有任何疑惑可以回复我~

是我最后写错了!基础知识不扎实,╮(╯▽╰)╭

0 回复 有任何疑惑可以回复我~
#1

余渡_

楼主能说一下你的问题出在哪里了么?
2018-05-18 回复 有任何疑惑可以回复我~
#2

qq_babysit 回复 余渡_

使用同一个controller,注入带有@Scope(scopeName="prototype")的service,​并不会产生多个service bean
2018-06-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我使用了@Scope(“prototype”),为什么测试结果还是单例的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信