Spring-bean的作用域

1、单例模式(Spring默认机制)    scope="singleton"   单线程使用

    <bean id="user3" class="lin.pojo.User" scope="singleton">
        <property name="name" value="XX林"/>
        <property name="age" value="18"/>
    </bean>
    @Test
    public void test4(){
        ApplicationContext context =
                new ClassPathXmlApplicationContext("userbean.xml");
        User user1 = (User) context.getBean("user3");
        User user2 = (User) context.getBean("user3");
        System.out.println(user1 == user2);
    }

  从结果可以得出,虽然拿出来的对象是多个,但是都是被id为user3的这个单例出来的!

2、原型模式    scope="prototype"    多线程可以使用

每次从容器中get的时候,都会产生一个新对象!

    <bean id="user3" class="lin.pojo.User" scope="prototype">
        <property name="name" value="XX林"/>
        <property name="age" value="18"/>
    </bean>
    @Test
    public void test4(){
        ApplicationContext context =
                new ClassPathXmlApplicationContext("userbean.xml");
        User user1 = (User) context.getBean("user3");
        User user2 = (User) context.getBean("user3");
        System.out.println(user1.hashCode());
        System.out.println(user2.hashCode());
        System.out.println(user1 == user2);
    }

 此时遇到了一个问题,user1 不等于 user2 为什么hashCode值相同,而且scope="prototype" 原型模式之后,不应该每次get的时候都会产生新的对象从而hasCode不相同吗?(以后请求大佬之后再回来解决!!!)

 3、其余的request、session、application

这些作用域只有在Web开发的情况下才可以用

request:对象在一次请求中创建,创建完这个对象就失效了。

session:session这个对象就一直在session中活着。

application:就是全局都活着。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lin_XXiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值