当前位置: 首页 > article >正文

Spring的Bean:Bean的生命周期(包括实践)

目录

生命周期

观察生命周期的方式

 生命周期实践(含代码)


生命周期

什么是生命周期?

答:从创建到消亡的整个过程就是生命周期。

观察生命周期的方式

在创建前,做一些事情;在结束前,做一些事情。在Bean的配置文件中绑定初始化方法和销毁方法。

 销毁方法需要注意的点:在JVM退出的时候,没有关闭IoC容器,就不会执行销毁方法;这个时候需要告诉JVM关闭IoC容器

关闭IoC容器的方法有两种:

1. close方法暴力关闭

2. 设置IoC容器关闭钩子,提醒JVM关闭IoC容器

 生命周期实践(含代码)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="cat" class="org.example.package2.Cat" init-method="init" destroy-method="destory"/>
    <bean id="dog" class="org.example.package2.Dog"/>
    <bean id="animalSet" name="abc1234" class="org.example.AnimalSet">
        <property name="animal1" ref="cat"></property>
        <property name="animal2" ref="cat"></property>
    </bean>
</beans>
package org.example;

import org.example.package2.Cat;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class LifeBean {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationConfig.xml");
        Cat cat = (Cat) ctx.getBean("cat");
        cat.sound();
        ctx.close();
    }
}
package org.example.package2;
import org.example.package1.Animal;

public class Cat implements Animal{

    public Cat() {
        System.out.println("Cat Constructor.....");
    }

    @Override
    public void sound(){
        System.out.println("cat sound");
    }
    public void init(){
        System.out.println("cat init Method.....");
    }
    public void destory(){
        System.out.println("cat destory Method.....");
    }
}
package org.example.package1;

public interface Animal {
    void sound();
}


http://www.kler.cn/a/511855.html

相关文章:

  • 跨境电商使用云手机用来做什么呢?
  • Ubuntu 24.04 LTS 安装 tailscale 并访问 SMB共享文件夹
  • 解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题
  • 《汽车维护与修理》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 人工智能之数学基础:线性代数中的线性相关和线性无关
  • 认识 MySQL 和 Redis 的数据一致性问题
  • CSS实现实现票据效果 mask与切图方式
  • uniapp——App 监听下载文件状态,打开文件(三)
  • RabbitMQ---应用问题
  • 回顾2024年度 - 挑战之旅:学习、生活与成长的华丽蜕变
  • 【无标题】微调是迁移学习吗?
  • Django简介与虚拟环境安装Django
  • leetcode763.划分字母区间
  • Android 存储进化:分区存储
  • 【博客之星2024年度总评选】年度回望:我的博客之路与星光熠熠
  • Android 极光推送快速开发集成指南(1)
  • Grafana系列之Dashboard:新增仪表板、新增变量、过滤变量、变量查询、导入仪表板、变量联动、Grafana Alert
  • 第9章:Python TDD解决货币对象相等性比较难题
  • python爬虫报错日记
  • 初始JavaEE篇 —— 快速上手 SpringBoot
  • 【Redis】Redis 集群中节点之间如何通信?
  • [cg] glProgramBinary
  • JavaScript系列(35)-- WebSocket应用详解
  • Redis系列之底层数据结构字典Dict
  • 图像处理|顶帽操作
  • Kivy App开发之UX控件Bubble气泡