Bean对象的定义?
在Spring框架中由Spring创立和治理的对象的对象称之为Bean对象。
Bean对象的个性?
Spring框架为了更加迷信的治理和利用Bean对象,为其设计相干个性,例如:懒加载、作用域以及生命周期办法。
懒加载(Lazy)
在Spring框架中,默认会在启动时会创立所有的Bean对象,但有些bean对象如果长时间不必,启动时就创建对象,会占用其内存资源,从而造成肯定的资源节约,此时咱们能够基于懒加载策略提早对象的创立,在设计类时,在类上增加@Lazy注解,例如:
package com.cy.pj.common.pool;
@Component
@Lazy
public 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")
@Component
public 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")
@Component
public 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对象的。