Spring管理bean机制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Spring管理bean机制package mon.pool;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.context.annotation.Scope;
import ponent;
/**
* 假设如下对象为⼀个池对象
* Spring 管理bean对象,会为bean赋予什么特性?这些特性有什么好处?
* 1)延迟加载(按需加载,懒加载)特性-暂缓对象的创建,何时需要何时创建?
* a)优点:可以优化资源的使⽤。
* b)缺点:⽤时在创建可能会导致响应速度降低。
* c)场景:资源有限,⼤对象,稀少⽤能懒加载就懒加载。
* d)实现:在需要懒加的对象类型上使⽤@Lazy注解进⾏描述
*
* 2)作⽤域(Spring框架为对象提供的作⽤范围,对象的⽣命周期只能在指定范围有效)
* a)优点:让对象在有效范围发挥作⽤,尽量控制对象的创建和销毁以保证对象的⾼效,低耗的运⾏。
* b)缺点:框架底层设计难度会加⼤,应⽤不熟练会导致作⽤域冲突。
* c)场景:不同业务,作⽤域的设计也不同?(例如对象在整个项⽬中应⽤⾮常频繁可以考虑单例作⽤域。
) * d)实现:在需要设定作⽤域的类上使⽤@Scope注解进⾏描述。
* d.1)@Scope("singleton") 单例作⽤域,此作⽤域的对象在这个内存只有⼀份,通过
* 共享设计(bean池),实现对象的可重⽤性。
此对象何时创建由懒加载(Lazy)特性
* 设计决定,是否可以被销毁由spring框架决定(⼀般是在容器销毁时销毁)。
适合
* 频度应⽤⽐较⾼的对象。
*
* d.2)@Scope("prototype") 多例作⽤域,此作⽤域的对象在需要时创建(与懒加载特性⽆关),
* 每次从容器获取都是⼀个新的对象,且这些对象spring框架不负责销毁。
适合应⽤频度⽐
* 较低的对象。
*
* 3)⽣命周期⽅法?(每个对象都有⽣命周期,但不见得每个对象都会设置⽣命周期⽅法)
* a)如何理解⽣命周期⽅法?⽣命周期⽅法是在对象⽣命周期过程中要执⾏的⼀些⽅法。
* b)设计⽣命周期⽅法的⽬的?对象⽣命周期的不同阶段执⾏不同业务(例如servlet 中init,service,destory) * c)Spring如何设计Bean对象⽣命周期⽅法?spring框架中使⽤相关注解对象对⽣命周期⽅法进⾏描述。
*
*
*
*/
@Component
//@Lazy
//@Scope("singleton") 默认,没有指定scope的时候默认就是singleton作⽤域
//@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
@Scope("prototype") //多例
public class ObjectPool {//⼀个普通的对象池对象
public ObjectPool() {
System.out.println("==ObjectPool()==");
}
@PostConstruct
//此注解描述⽣命周期初始化⽅法,在构造⽅法执⾏之后执⾏,
//⽤于实现⼀些资源的初始化操作
public void init() {
System.out.println("==init()==");
}
@PreDestroy //此注解描述⽣命周期销毁⽅法,在对象销毁之前执⾏
public void destory() {
System.out.println("==destory()==");
}
}
//程序的终极⽬标:⾼效,低耗。