问答详情
源自:4-7 Spring Bean装配之基于Java的容器注解说明——@Bean和@Scope

我使用了@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。



提问者:蓝烟amber 2017-06-16 13:33

个回答

  • qq_匿名者_911
    2017-06-16 16:25:14
    已采纳

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

  • 潇潇小饭
    2018-08-24 08:13:21

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

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


  • 那个怪蜀黍是谁额
    2018-06-15 10:37:53

    不是应该用

    @Scope(name="prototype")

    么?

  • 稻子凡
    2017-09-03 21:45:36

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

  • 慕用3394797
    2017-08-07 18:48:35

    为什么 》???

  • 蓝烟amber
    2017-06-16 19:19:23

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