Spring Framework - 管理对象

Spring Framework - 管理对象,第1张

Spring管理对象的作用域

Spring管理的对象作用域默认单例,同一个Bean,获取多少次都是同一个对象。

在类上添加以下注解:

  • @Scope("singleton")默认单例,
  • @Scope("prototype")不是单例。

小案例:以UserMapper为例

创建UserMapper类

package spring;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
@Scope("prototype")
public class UserMapper {
}

输出测试结果

对于非单例的Bean随时用完随时销毁,单例的一直都在。

@Lazy懒加载

  • 单例情况下默认不是懒加载
  • 优点:当需要对象的时候才把它创建出来,不浪费资源。
  • 缺点:时间不可控,万一服务器任务负荷,不一定什么时间把对象创建出来。
Spring管理对象的生命周期

Spring创建并管理对象,开发人员无法干预对象,Spring允许在类中自定义最多两个方法,即初始化方法和销毁方法。

  • @PostConstruct在初始化方法声明之前添加
  • 初始化方法:价值不大,很少用到。可以把代码写到构造方法里面。
  • @PreDestroy在销毁方法的声明之前添加
  • 销毁方法:价值大。如果用到流、线程池或数据库连接池等,就应该做个销毁,否则会导致内存溢出、内存泄漏等问题。
  • 注意:仅当类的对象被Spring管理且是单例的,才有讨论生命周期的价值。

小案例:以UserMapper为例

package spring;

import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component
public class UserMapper {
    @PostConstruct
    public void init(){
        System.out.println("UserMapper.init()");
    }
    @PreDestroy
    public void destroy(){
        System.out.println("UserMapper.destroy()");
    }

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/724847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存