易学笔记--第2章:spring中的Bean/2.5 Bean的周期回调

 

第2章:spring中的Bean/2.5 Bean的周期回调/2.5.1  概念


第2章:spring中的Bean/2.5 Bean的周期回调/2.5.2 声明周期方法

  1. 方法范围:在Bean类中的任何方法
  2. 方法参数:无参数
  3. 方法返回值:无返回值
  4. 是否可以抛出异常:可以抛出异常

第2章:spring中的Bean/2.5 Bean的周期回调/2.5.3 XML方式定义回调方法

  1. Bean对象创建完成后初始化方法:init-method="方法名",这里的方法名符合: 第2章:spring中的Bean/2.5 Bean的声明周期/2.5.2 声明周期方法
  2. Bean对象销毁之前清理方法:destroy-method="方法名",这里的方法名符合: 第2章:spring中的Bean/2.5 Bean的声明周期/2.5.2 声明周期方法
  3. 举例:
    1. 类定义:

      public class Foo {

           //初始化方法

           public void init() throws Exception {

                 System.out.println("Foo.init method invoked");

           }

           

           //销毁方法

           public void destroy() throws RuntimeException {

                 System.out.println("Foo.destroy method invoked");

           }

      }

    2. XML格式定义:

        <!-- init和 destroy分别对应com.wiley.beginningspring.ch2.Foo类中的方法-->

           <bean id="foo" class="com.wiley.beginningspring.ch2.Foo" init-method="init" destroy-method="destroy"/>

    3. 调用方法:

      public class Main {

           public static void main(String[] args) {

                 ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");

                 applicationContext.registerShutdownHook();

           }

      }

    4. 调用结果:Foo.init method invoked

      Foo.destroy method invoked


第2章:spring中的Bean/2.5 Bean的周期回调/2.5.4 注解方式方式定义回调方法

  1. Bean对象创建完成后初始化方法:使用注解:@PostConstruct,
  2. Bean对象销毁之前清理方法:使用注解:@PreDestroy
  3. 举例:
    1. 类定义:

      import javax.annotation.PostConstruct;

      import javax.annotation.PreDestroy;

      public class Bar {

           @PostConstruct

           public void init() throws Exception {

                 System.out.println("Bar.init method invoked");

           }

           

           @PreDestroy

           public void destroy() throws RuntimeException {

                 System.out.println("Bar.destroy method invoked");

           }    

      }

    2. XML中定义:

      <!-- 声明使用注解 -->

           <bean class="com.wiley.beginningspring.ch2.Bar"/>

           <context:annotation-config/>

    3. 调用方法:

      public class Main {

           public static void main(String[] args) {

                 ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");

                 applicationContext.registerShutdownHook();

           }

      }

    4. 调用结果: Bar.init method invoked

      Bar.destroy method invoked


第2章:spring中的Bean/2.5 Bean的周期回调/2.5.5 实现接口方式

  1. Bean对象创建完成后初始化方法:实现接口InitializingBean中的public void afterPropertiesSet() throws Exception方法
  2. Bean对象销毁之前清理方法:实现接口DisposableBean中的public void destroy() throws Exception方法
  3. 举例:
    1. 举例:
      1. 类定义:

        import org.springframework.beans.factory.DisposableBean;

        import org.springframework.beans.factory.InitializingBean;

        public class Baz implements InitializingBean, DisposableBean {

            //初始化方法

             public void afterPropertiesSet() throws Exception {

                   System.out.println("Baz.init method invoked");

             }

             //销毁方法

             public void destroy() throws Exception {

                   System.out.println("Baz.destroy method invoked");

             }

             

        }

      2. XML中定义:

        <bean class="com.wiley.beginningspring.ch2.Baz"/>

      3. 调用方法:

        public class Main {

             public static void main(String[] args) {

                   ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");

                   applicationContext.registerShutdownHook();

             }

        }

      4. 调用结果: Baz.init method invoked

        Baz.destroy method invoked

 

猜你喜欢

转载自blog.csdn.net/u011830122/article/details/83901856