您的位置:首页 > 编程语言 > Java开发

Spring Boot 小白级-最初级入门项目工程之三(分析为什么使用spring框架管理bean,它赋予了bean什么特性?)

2020-06-29 22:59 148 查看

这一篇 ,我们来研究一下Spring来管理Bean对象的原因

1.spring框架会降低对象与对象之间的直接耦合(松耦即减少依赖),从而提高程序的可维护性和拓展性

2.spring框架来管理对象会为对象赋予什么样的特性?

a.第一个特性 :延迟加载特性(按需加载或是懒加载):暂缓对象的创建                                                                                                优点:优化资源使用,(充分利用内存空间)                                                                                                                                         缺点:用的时候再创建对象会影响程序的响应速度                                                                                                                                场景:大对象(耗内存)并且不常用的时候,                                                                                                                                        实现:在要延迟加载的类上使用@Lazy注解进行描述

b.第二个特性: 作用域                                                                                                                                                                                  优点:让对象在有效的作用域之中使用,尽量控制对象的初始化与销毁,从而实现对象的高效低耗的运行                                      缺点:底层框架编写难度加大,可能在不熟练的情况下可能会出现域冲突的问题                                                                              实现:在需要设置作用域的类上加入,@Scope注解进行描述,该注解再用的有四种域,常用于Springboot中的有两种

b1).@Scope("singleton ")     :单例作用域,从始至终只有一个对象,可以配合懒加载(@Lazy)使用。同时对象的创建与销毁都归Spring管理.。适用:程序中使用频度高的对象,可以描述为单例对象,默认就是单例作用域,通过池技术(亨元技术)实现对象的共享重复调用。

b2).@Scope("prototype ")    : 多例作用域,每调用一次就是一个新的对象,需要时(调用)加载(不依赖与懒加载特性),对象的销毁不归spring框架管理。 最终的销毁由程序员(JVM虚拟机中的GC机制回收)

c.第三个特性 :生命周期方法 (最常用的就是初始化方法与销毁方法)                                                                                                     我们先来聊一聊什么是生命周期方法:每一个对象都会有生命周期(从创建到销毁),但是并不是没一个对象都会有生命周期方法。(生命周期方法:在对象的生命周期阶段,不同阶段 该对象会执行不同的方法-----例如:人在不同的年龄段会经历不同的事情,而不是一层不变,无波无澜)

c1).@PostConstruct注解,用来描述生命周期初始化方法,在构造方法执行之后执行,用于实现对象的初始化

c2). @PreDestroy 注解,用来描述生命周期销毁方法,在对象销毁之前执行。(注:因为多例作用域对象的销毁不归Spring框架管理,所以该注解对多例作用域对象没有效果)

[code]@Component
public class yrfSpringBoot{
//生命周期初始化方法
@PostConstruct
public void A(){
Sysotem.out.println("=============")

}

//生命周期销毁方法
@PreDestroy
public void B(){
Sysotem.out.println("*************")

}

}

 

 

 

     

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐