zoukankan      html  css  js  c++  java
  • Spring Bean的生命周期

    Spring IoC容器的本质是管理Bean,对于Bean而言在容器中有其存在的生命周期。它的初始化和销毁也需要一个过程。Bean的生命周期主要了解Spring IoC容器初始化和销毁Bean的过程。为了定义安装和拆卸一个 bean,我们只要声明带有 init-method 和/或 destroy-method 参数的 。init-method 属性指定一个方法,在实例化 bean 时,立即调用该方法。同样,destroy-method 指定一个方法,只有从容器中移除 bean 之后,才能调用该方法。

    Bean的生命周期可以表达为:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁 

    1.1 定义Bean

     这是Bean配置文件

    1  <?xml version="1.0" encoding="UTF-8"?>
    2  <beans xmlns="http://www.springframework.org/schema/beans"
    3      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    5          
    6     <bean id="HelloWorld" class="com.spring.chapter2.HelloWorld" init-method="init" destroy-method="destroy">
    7          <property name="say" value="世界你好"></property>
    8     </bean>
    9  </beans>

    1.2下面是HelloWorld.java的定义:

     1 package com.spring.chapter2;
     2 
     3 public class HelloWorld {
     4 
     5     
     6     public String getSay() {
     7         return say;
     8     }
     9     public void setSay(String say) {
    10         this.say = say;
    11     }
    12     private String say;
    13     
    14     
    15     public void init(){
    16         System.out.println(say+"Bean 开始初始化...");
    17         
    18     }
    19     public void destroy(){
    20         System.out.println(say+"Bean 开始销毁...");
    21     }
    22 
    23 }

    2.1 下面是 Main.java 文件的内容。

    1     public static void main(String[] args) {
    2         
    3         AbstractApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring_xml/spring.xml");
    4         HelloWorld helloWorld=(HelloWorld)applicationContext.getBean("HelloWorld");
    5         System.out.println(helloWorld.getSay());
    6         applicationContext.registerShutdownHook(); //AbstractApplicationContext 类中声明的关闭 hook 的 registerShutdownHook()方法。它将确保正常关闭,并且调用相关的 destroy 方法。
    7     }

    2.2测试结果

    默认的初始化和销毁方法

    如果你有太多具有相同名称的初始化或者销毁方法的 Bean,那么你不需要在每一个 bean 上声明初始化方法销毁方法。框架使用 元素中的 default-init-method 和 default-destroy-method 属性提供了灵活地配置这种情况,如下所示:

     1 <beans xmlns="http://www.springframework.org/schema/beans"
     2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xsi:schemaLocation="http://www.springframework.org/schema/beans
     4     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
     5     default-init-method="init" 
     6     default-destroy-method="destroy">
     7 
     8    <bean id="..." class="...">
     9       ...
    10    </bean>
    11 
    12 </beans>
  • 相关阅读:
    如何垂直居中一个浮动元素?
    微信小程序vant-search获取不到输入的搜索内容踩坑
    关于微信小程序无法使用css3过度属性transition以及微信小程序如何利用api进行画面过度的展示
    Spring Shedule Task之注解实现 (两次启动Schedule Task 的解决方案)
    学习站点记录
    Spring 通过配置文件注入 properties文件
    Liunx下安装jdk
    Mybatis使用generator自动生成映射配置文件信息
    Tomcat容器虚拟路径设置
    Spring init-method和destroy-method 的使用
  • 原文地址:https://www.cnblogs.com/ysource/p/12345463.html
Copyright © 2011-2022 走看看