Bean对象的定义?

在Spring框架中由Spring创立和治理的对象的对象称之为Bean对象。

Bean对象的个性?

Spring框架为了更加迷信的治理和利用Bean对象,为其设计相干个性,例如:懒加载、作用域以及生命周期办法。

懒加载(Lazy)

在Spring框架中,默认会在启动时会创立所有的Bean对象,但有些bean对象如果长时间不必,启动时就创建对象,会占用其内存资源,从而造成肯定的资源节约,此时咱们能够基于懒加载策略提早对象的创立,在设计类时,在类上增加@Lazy注解,例如:

package com.cy.pj.common.pool;@Component@Lazypublic class ObjectPool {  public ObjectPool() {    System.out.println("ObjectPool()");  }}
其中,@Lazy注解中有一个value属性,其默认值为true示意提早加载。

作用域(Scope)

Spring框架创建对象当前,能够给对象一个作用域,目标是让对象在肯定范畴内能够进行重用,罕用有单例(singleton)和多例(prototype)两种,其中:

  • singleton:此作用域指的是,名字和类型雷同的Bean对象实例在整个Spring容器中只能一份。此实例何时创立与类的提早加载个性配置无关,此实例创立当前,生命周期会由spring框架治理。
  • prototype:此作用域指的是,每次从Spring容器获取对象都会创立新实例,此实例会在须要时创立与lazy个性无关,这个实例创立当前,spring能够对其初始化,但不负责销毁。

基于注解@Scope形式设定Bean作用域,代码演示:

package com.cy.pj.common.pool;、@Lazy@Scope("singlton")@Componentpublic class ObjectPool {  public ObjectPool() {    System.out.println("ObjectPool()");  }}
Spring中默认bean对象的作用域为singleton,如果心愿是prototype能够应用@Scope("prototype")

生命周期办法

程序中每个对象都有生命周期,但不是每个对象类型定义时,都要定义生命周期办法,当一个Bean对象创立当前如果还需执行额定初始化,销毁之前也须要额定的其它资源的开释,Spring框架能够为类定义其生命周期办法。如果是注解形式,咱们能够采纳如下两个注解进行实现。

  • @PostConstruct 注解用于形容bean对象生命周期办法中的初始化办法,此办法会在对象的构造方法之后执行(是对象创立当前的初始化)。
  • @PreDestroy 注解用于形容Bean对象生命周期办法中的销毁办法,此办法会在对象销毁之前执行(当作用域为prototype时,此办法不会执行)。

代码演示:

package com.cy.pj.common.pool;、@Lazy@Scope("singlton")@Componentpublic class ObjectPool {  public ObjectPool() {    System.out.println("ObjectPool()");  }  @PostConstruct   public void init() {    System.out.println("init()");  }  @PreDestroy  public void close() {    System.out.println("close()");  }}
个别池对象都会设置一些生命周期办法,例如连接池。

总结(Summary)

本大节次要对Spring框架中的Bean对象个性做了一个概要剖析,能够通过这个剖析理解Spring框架是如何迷信利用bean对象的。