[Spring笔记] Spring-21-注解开发bean作用范围与生命周期管理

Spring-21-注解开发bean作用范围与生命周期管理

  1. 是否单例

由 Scope 注解设置,默认为 singleton (单例模式),设置为 prototype 为非单例

@Component
@Scope("prototype")
class xxx {
    
}
  1. 生命周期

PostConstruct 与 PreDestroy 注解设置初始化与析构

    @PostConstruct
    private void init() {
    }
    
    @PreDestroy     // 非单例模式不执行
    private void destroy() {
    }

还需使 context 关闭才会执行 destroy(),有下面两种方法
// ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
ctx.registerShutdownHook();     // 注册钩子 (jvm 结束前关闭资源)
ctx.close();    // 直接关闭

用 ApplicationContext 接口实例化的 context 不包含上面两个方法,要用实例的类名

[补充]:

  • 非单例模式下不会执行 PreDestroy 注解的函数

  • 较新版本的 jdk 不再支持两个注解, 需添加依赖 javax.annotation-api

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>
  1. jdk 版本问题

Spring 注解开发时出现错误:Unsupported class file major version 62

原因是 jdk 编译版本过高,将编译等级改为 8 即可 (Compiler->Java Compiler)

在这里插入图片描述


视频链接:https://www.bilibili.com/video/BV1Fi4y1S7ix?p=23

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值