2.Spring管理的Bean的作用域与生命周期

当我们再配置文件中配置:

<bean id="user" class="cn.cxc.User"></bean>

测试:

    public static void main(String[] args) {
        //1加载spring的配置文件,获取sping容器
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
        
        //2从spring容器中过去对象
        User user1 = ac.getBean("user", User.class);
        User user2 = ac.getBean("user", User.class);
        User user3 = ac.getBean("user", User.class);
        
        //3测试
        System.out.println(user1);
        System.out.println(user2);
        System.out.println(user3);
        
        //4关闭
        ac.close();
    }

会在控制台得到以下结果:

//注意结果不一定是这个,但三句肯定是一样的
cn.cxc.User@46d56d67 cn.cxc.User@46d56d67 cn.cxc.User@46d56d67

以上就是所说的单例模式,而非单例得到的结果肯定不一样。

正文:

由Spring管理的Bean,默认是单例的,也就是说:根据同一个Bean Id反复获取,得到的对象会是同一个对象!

可以在<bean>节点中添加scope属性,以配置是否单例,例如:

<!-- scope属性:作用域,常用取值可以是singleton或prototype,默认是前者,表示“单例”,后者表示“非单例” -->
<bean id="user" class="cn.cxc.spring.User" scope="prototype"></bean>

猜你喜欢

转载自www.cnblogs.com/caoxingchun/p/12717020.html