Spring容器控制Bean实例化的方式:作用域控制

2025-05-16 23:58:58

1、首先,创建一个类BeanControl,作为实例化的javaBean对象,看bean作用域只需要看bean实例化的过程,因此只需要重写无参构造器,在构造其中直接输出“实例化javaBean”。通过查看控制台输出次数即可看出Bean的作用域。

Spring容器控制Bean实例化的方式:作用域控制

2、在applicationContext.xml中声明Bean,id为beanControl,class路径指向类BeanControl。如磨营稼刻果要加入作用域,需再添加scope属性,如果不加入作用域属性,默认即为singleton,此处加上以便区分。

Spring容器控制Bean实例化的方式:作用域控制

3、创建测试类SpringControl,在其中加入测试方法testBeanControl,其中获取Spring容器后,对BeanControl对象进行两次实例,并比较其引用是否相同。

Spring容器控制Bean实例化的方式:作用域控制

4、用junit直接运行该方法,测试结果如下:输出了一次实例化javaBean和比较引用结果为true,分析只调用了一次构造器。因此在作用域配置为singleton时,为单例模式;在苻抽苍黪整个系统上下文中,通过spring容器获取的BeanControl对象都是相同的一个对象。

Spring容器控制Bean实例化的方式:作用域控制

5、修改applicationContext.xml中bean配置,将scope修改为prototype

Spring容器控制Bean实例化的方式:作用域控制

6、运行测试方法,结果如下:其中输出实例化javaBean两次,比较结果为false。分析为实例化两次bean对。因此当作用域设置为prototype时,通过spring容器获取的BeanControl对象都是不同的。

Spring容器控制Bean实例化的方式:作用域控制

7、两种作用域使用场景:一般无状态的bean对象时,使用单例singleton;有状态的bean使用原型prototype。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢