@Laze注解
延迟加载(又名懒加载),属于String框架里的注解,其作用是告诉Spring框架
被描述的当前bean对象在使用的时候进行创建(创建实例)和初始化,而非在程序启动运行的时候
为什么要使用Laze注解?Laze注解起到了什么作用?有什么好处?
@Laze注解可以使当前Bean对象在使用的时候再进行创建和初始化,这种构建的好处是节省了内存资源,避免了创建大多时间用不上的Bean实例对象,
从而还存在内存占用耗费资源这种尴尬的情况
应用场景:大对象(池对象),稀少使用等
@Laze注解相关
Laze注解()中可以输入boolean函数,true则描述使用延迟加载,而false则描述不使用延迟加载。Laze因为默认为true所以可以省略,而为false时则可以选择不使用Laze描述注解(效果是一样的)
@Scope注解
Scope注解用来描述当前指定类实例的作用域
1.singleton:默认为单例作用域,类的实例在JVM内存中只有一份,通常
会和@Laze配合使用,可以忽略不写
2.prototype:多例作用域,此作用域对象需要何时创建,Spring框架不负责销毁
可以有多个实例,通常会用到一次性对象,或者不可重用对象等应用场景
@Scope注解单实例和多实例有什么区别?各自作用是什么?
单实例为@Scope注解的默认值,在JVM中全局只有一份,无论如何使用@Autowired接收都是指向同一个对象(地址值相同),并且一般和@Laze注解配合使用,并且单实例销毁也由Spring框架负责。
多实例则是可以创建多个类实例,并且Spring框架只负责创建并不负责销毁
根据应用场景的不一样可以选择单实例或者多实例
Bean对象的生命周期方法
@PostCinstruct生命周期初始化方法在此方法中一般会为创建好的对象在此进行一些初始化,并将bean实例对象放入bean池中
@PreDestroy此注解描述的方法为生命的销毁方法,此方法会在对象销毁之前执行,在这样的方法中可以实现一些,资源销毁的操作
生命周期方法的小拓展
在单实例和多实例中,Spring框架会完全负责单实例的生命周期的所有过程
而在多实例的情况,我们会发现Spring框架只调用了生命周期初始化的方法
并不会调用销毁的方法