目录 start

  1. Spring官方文档学习
    1. 1、Spring Bean的生命周期
    2. 2、Spring容器的扩展点

目录 end|2019-10-19 17:04|


Spring官方文档学习

1、Spring Bean的生命周期

  • 初始化(当一个bean配置和了多个生命周期时,执行顺序如下顺序)

    • 在方法上使用@PostConstruct注解(推荐使用,同xml中的init-method属性一致)

    • 实现接口InitializingBean,在方法afterPropertiesSet()中可进行bean的初始化操作(在容器设置完bean的必须属性后执行,不建议使用接口,推荐使用注解或xml配置)

    • 在bean的xml配置中在<beans>标签上使用类似于属性default-init-method="init"的配置后,在beans下配置的bean会在初始化时调用bean中定义的方法名为init的方法

    • 实现接口BeanPostProcessor中的postProcessBeforeInitializationpostProcessAfterInitialization方法。该接口会处理他可以找到的所有回调接口

  • 销毁(当一个bean配置和了多个生命周期时,执行顺序如下顺序)

    • 在方法上使用@PreDestroy注解(同上,及与xml配置中的destroy-method属性一致)

    • 实现接口DisposableBean,在方法destroy()中,可进行bean的销毁时的操作

    • 在bean的xml配置中在<beans>标签上使用类似于属性default-destroy-method="destroy"的配置后,在beans下配置的bean会在销毁时调用bean中定义的方法名为destroy的方法

  • 关闭与启动

    • 实现接口Lifecycle
  • 在非Web应用中关闭spring IOC容器

    • 调用ConfigurableApplicationContext中的registerShutdownHook()方法,这样便就能调用销毁的回调函数
  • 为Bean提供ApplicationContext实例

    • 实现ApplicationContextAware,则就可以为该bean实例获取ApplicationContext
  • 让Bean获取自身在BeanFactory中的名称(id或name)

    • 实现BeanNameAware接口中,则咎可以获取名称(该方法在初始化之前)

2、Spring容器的扩展点