Spring如何管理Bean生命周期

Spring提供两种管理对象生命周期的方式:


1.在使用@Component注解管理Bean组件时候,使用@PostConstruct和@PreDestroy注解管理对象的声明周期方法
a.注意这两个注解不是Spring注解,是Java提供的扩展注解,需要导入
javax.annotation包,利用Maven导入即可。
b. @PostConstruct注解标注的方法在创建对象以后执行c. @PreDestroy注解标注的方法在关闭容器关闭对象时候执行
2.在使用@Bean注解管理Bean组件时候,在其inltMethod和destroyMethod属性上标注生命周期
管理方法名。
a. initMethod属性引用的方法在创建对象以后执行
b. destroyMethod属性引用的方法在容器关闭时候执行
3.@Scope("prototype”)时候,每次使用都会创建一个对象,Spring为了避免内存泄露,不
会缓存对象的引用,所以Spring关闭时候就无法处理对象的销毁方法了!


懒惰初始化

为了尽可能的提高性能,Spring默认情况下在启动时候将Bean立即实例化,这样在使用Bean对象就可以立即可以使用,减少了时间延迟。立即实例化也有缺点,如果某个Bean很少使用,甚至可能不使用的情况下,立即实例化为对象占用了宝贵的内存资源。比如上面案例中,没有使用FileLogger对象,但是却被创建出来,照成了资源浪费。
为了解决这个情况,Spring提供了“懒惰初始化“功能,开启这功能,可以在需要使用对象时候初始化对象,如果不使用对象就不初始化对象,这样就可以充分利用内存资源,避免浪费。对应使用率很少的Bean组件应用采用懒惰方式初始化。懒惰初始化第一次使用对象时候需要初始化,所以在第一次使用对象时候会有所延迟。对于性能要求高,肯定被使用的对象,不要采用懒惰初始化了。
Spring中利用@Lazy注解开启懒惰初始化,开启懒惰初始化后如果不使用Bean组件,将不会初始化对象。
1 @Lazy 可以与@Component一起使用

2. @Lazy 可以与@Bean一起使用
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值