Bean的生命周期

简介: Bean的生命周期

@[TOC]

1 指定初始化和销毁方法

  • 创建Car

    public class Car {
         
    
      public Car() {
         
          System.out.println("car constructor......");
      }
    
      public void init(){
         
          System.out.println("car ...init...");
      }
    
      public void destory(){
         
          System.out.println("car ...destory...");
      }
    }
    
  • 写配置类

    @Configuration
    public class MainConfigOfLifeCycle {
         
    
      @Bean(value = "car",initMethod="init",destroyMethod = "destory")
      public Car car(){
         
          return new Car();
      }
    }
    
  • 测试
    @Test
      public void test01(){
         
          AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfigOfLifeCycle.class);
          System.out.println("容器创建完成");
          context.close();
      }
    

    2 使用接口InitializingBeanDisposableBean实现初始化和销毁

  • 新建Cat类实现接口InitializingBeanDisposableBean
    ```java
    import org.springframework.beans.factory.DisposableBean;
    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.stereotype.Component;

@Component
public class Cat implements InitializingBean, DisposableBean {

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

//容器关闭时调用
@Override
public void destroy() throws Exception {
    System.out.println("cat ... destroy ....");
}

//Bean创建完成,并且属性都复制后执行
@Override
public void afterPropertiesSet() throws Exception {
    System.out.println("cat ... afterPropertiesSet ...");
}

}

* 注入IOC容器
```java
@Configuration
@ComponentScan("com.yunfeng.spring2.entity")
public class MainConfigOfLifeCycle {}
  • 测试
    @Test
      public void test01(){
         
          AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfigOfLifeCycle.class);
          System.out.println("容器创建完成");
          context.close();
      }
    

    3 使用JSR250中的@PreDestroy@PostConstruct

    ```java
    import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

@Component
public class Dog {

public Dog() {
    System.out.println("Dog constructor....");
}

//容器关闭时调用
@PreDestroy
public void destroy() throws Exception {
    System.out.println("Dog ... destroy ....");
}

//Bean创建完成,并且属性都复制后执行
@PostConstruct
public void afterPropertiesSet() throws Exception {
    System.out.println("Dog ... PostConstruct ...");
}

}

# 4 BeanPostProcessor后置处理器
* 在bean初始化前后进行一些处理工作
```java
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;

/**
 * 后置处理器:初始化前后进行处理工作
 */
@Component
public class MyBeanPostProcessor implements BeanPostProcessor {
    //初始化前执行
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessBeforeInitialization..." + beanName + bean);
        return bean;
    }

    //初始化后执行
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessAfterInitialization..." + beanName + bean);
        return bean;
    }
}
目录
相关文章
|
7月前
|
前端开发 Java 开发者
Bean的生命周期和作用域
Bean的生命周期和作用域
|
3月前
|
Java 开发者 Spring
Bean生命周期介绍
Spring Boot 的 Bean 生命周期管理是其核心功能之一,负责应用程序中 Java 对象(称为 Beans)的创建、配置、初始化和销毁。此功能提供了灵活的依赖注入方式,便于组件化开发。Bean 生命周期包括实例化、属性注入、初始化方法调用、使用及销毁方法调用等阶段。应用场景涵盖依赖注入、配置管理、组件扩展及切面编程。通过实现特定接口或注解,开发者可轻松管理对象生命周期,优化应用性能。示例代码展示了如何通过日志观察 Bean 生命周期的不同阶段。
117 3
|
7月前
|
XML Java 数据格式
Spring框架学习 -- Bean的生命周期和作用域
Spring框架学习 -- Bean的生命周期和作用域
58 2
|
7月前
|
存储 设计模式 Java
Bean 作用域和生命周期
Bean 作用域和生命周期
|
Java 容器 Spring
Bean生命周期
Bean生命周期
|
7月前
|
Java 开发者 Spring
Bean 的生命周期了解么
Bean 的生命周期了解么
|
Java Spring 容器
bean的生命周期
bean的生命周期
56 0
|
存储 安全 Java
Bean 的作用域和生命周期
Bean 的作用域和生命周期
75 1
|
XML Java 数据格式
Bean 的生命周期
Bean 的生命周期介绍
|
XML 安全 Java
Bean作用域和生命周期
Bean作用域和生命周期