亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring容器擴(kuò)展機(jī)制的實(shí)現(xiàn)原理

 更新時(shí)間:2018年11月30日 11:34:10   作者:sc_ik  
這篇文章主要介紹了Spring容器擴(kuò)展機(jī)制的實(shí)現(xiàn)原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

IoC 容器負(fù)責(zé)管理容器中所有 bean 的生命周期, 而在 bean 生命周期的不同階段, Spring 提供了不同的擴(kuò)展點(diǎn)來改變 bean 的命運(yùn). 在容器的啟動(dòng)階段, BeanFactoryPostProcessor 允許我們在容器實(shí)例化相應(yīng)對象之前, 對注冊到容器的 BeanDefinition 所保存的信息做一些額外的操作, 比如修改 bean 定義的某些屬性或者增加其他信息等.

BeanPostProcessor 接口

如果希望在Spring容器完成實(shí)例化、配置和初始化bean之后實(shí)現(xiàn)某些自定義邏輯, 則可以實(shí)現(xiàn)一個(gè)或多個(gè) BeanPostProcessor 接口.

public interface BeanPostProcessor {

  @Nullable
  default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    return bean;
  }

  @Nullable
  default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    return bean;
  }

}

在 Bean 實(shí)例化之后會(huì)先執(zhí)行 postProcessBeforeInitialization 方法, 再執(zhí)行 Bean 的初始化方法, 然后在執(zhí)行 postProcessAfterInitialization 方法.

Ordered 接口 @Order 注解

此接口只有一個(gè)方法 int getOrder(); 用來設(shè)置執(zhí)行順序.

如果實(shí)現(xiàn)多個(gè) BeanPostProcessor 接口, 我們就可以實(shí)現(xiàn) Ordered 接口來設(shè)置執(zhí)行順序.

@Component
public class Test implements BeanPostProcessor, Ordered {

  @Override
  public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    return bean;
  }

  @Override
  public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    return bean;
  }

  @Override
  public int getOrder() {
    return 1;
  }
}

也可以使用 @Order 注解進(jìn)行排序

@Configuration
@Order(2)
public class Demo1Config {
  @Bean
  public Demo1Service demo1Service(){
    System.out.println("demo1config 加載了");
    return new Demo1Service();
  }

}

BeanFactoryPostProcessor 接口

在容器實(shí)例化相應(yīng)對象之前, 對注冊到容器的 BeanDefinition 所保存的信息做一些額外的操作可以實(shí)現(xiàn)此接口.

區(qū)別

  • BeanFactoryPostProcessor 會(huì)處理一些元數(shù)據(jù).
  • BeanPostProcessor 會(huì)處理實(shí)例化后的對象.

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論