Opptunity to create an object for the spring container

单例模式下:
测试类

   public void test1(){
 //启动spring容器 
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml"); 
//在这里输出一句话,这里刚刚好启动了spring容器 
System.out.println("invoke!!!!"); 
//得到helloSpring对象 
helloSpring helloSpring=(helloSpring) applicationContext.getBean("hello"); 
//调用相应的方法 helloSpring.hello(); }

如此,输出结果为:
new instance
invoke!!!
hello spring!
所以,spring默认创建对象是在启动spring的时候。

当然,我们还可以调用这个对象的时候,才创建这个对象:
添加一个属性: lazy-init 该属性的默认值为default。相当于false。

<bean class="cn.ansel.domain.helloSpring" id="hello" lazy-init="true"></bean>

spring创建对象的时机的意义:
当我们使用ssh整合的时候,tomcat启动时就创建配置文件中的所有bean对象的,如果有某些类或者配置文件的书写有误,这时候,spring容器就会报错,那么自然spring容器也就启动不起来了。这种情况可以避免,我们到了后面真正要调用该类的时候才报错。当然这种做法,会把一些类过早的加载到内存中。 当我们选择在调用某个类的时候,spring容器才帮我们创建这个类,首先我们可以解决第一种情况出现的问题,节省了内存但是这时候,类和配置文件中许多隐藏的错误,在调用的时候才发现,这时候添加了查错的压力。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,926评论 6 342
  • 什么是Spring Spring是一个开源的Java EE开发框架。Spring框架的核心功能可以应用在任何Jav...
    jemmm阅读 16,536评论 1 133
  • 画了一组图,期待把它们做成书签
    谷雨一一阅读 439评论 1 3
  • (整理笔记的时候,翻到了2年前看完《海角七号》后写下的随笔,整理了一下放到这里来。) 我是回来老家后,和表妹一...
    逢畅阅读 683评论 0 0