国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring注解開發(fā)生命周期原理解析

Spring注解開發(fā)生命周期原理解析

2020-09-15 00:32Jimmyhe Java教程

這篇文章主要介紹了Spring注解開發(fā)生命周期原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

生命周期

initMethod和destroyMethod

Bean定義

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Car {
  public Car() {
    System.out.println("car constructor");
  }
 
  public void init(){
    System.out.println("car init");
  }
 
  public void destroy(){
    System.out.println("car destroy");
  }
}

配置類

  • bean創(chuàng)建--初始化--銷毀
  • 可以自定義初始化和銷毀方法
  • 初始化:對象創(chuàng)建完成,并賦值完成,調(diào)用初始化方法
  • 銷毀: 容器關閉進行銷毀(單實例)

? 多實例容器不會管理這個bean

?
1
2
3
4
5
6
7
8
@Configuration
public class MyCOnfigOfLifeCycle {
 
  @Bean(initMethod = "init",destroyMethod = "destroy")
  public Car car(){
    return new Car();
  }
}

獲取容器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void test01(){
  printBeans(applicationContext);
 
  // 關閉容器
  applicationContext.close();
}
 
private void printBeans(AnnotationConfigApplicationContext applicationContext){
  String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
  for (String beanDefinitionName : beanDefinitionNames) {
    System.out.println(beanDefinitionName);
  }
}

InitializingBean和DisposableBean

Bean定義

?
1
2
3
4
5
6
7
8
9
10
11
public class Cat implements InitializingBean, DisposableBean {
  @Override
  public void destroy() throws Exception {
    System.out.println("cat destroy");
  }
 
  @Override
  public void afterPropertiesSet() throws Exception {
    System.out.println("cat initialize");
  }
}

實現(xiàn)了InitializingBean和Disposable后,也可以實現(xiàn)初始化和銷毀的方法

PostConstruct和PreDestroy

Bean定義

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Dog {
  public Dog(){
    System.out.println("dog constructor");
  }
 
  @PostConstruct
  public void init(){
    System.out.println("dog init");
  }
 
  @PreDestroy
  public void destroy(){
    System.out.println("dog destroy");
  }
}

BeanPostProcessor

bean

定義

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyBeanPostProcessor implements BeanPostProcessor {
 
 
  @Override
  public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    System.out.println("before init" + beanName);
    return bean;
  }
 
  @Override
  public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    System.out.println("after init" + beanName);
    return bean;
  }
}

加入到bean中,可以發(fā)現(xiàn)每個bean初始化前后都會執(zhí)行功能

  • postProcessBeforeInitialization將在一個bean被完全初始化前進行回調(diào),此時對應的bean已經(jīng)實例化了,但是對應的屬性注入等還沒有進行,即在調(diào)用InitializingBean的afterPropertiesSet()方法或bean對應的init-method之前
  • postProcessAfterInitialization將在bean被完全初始化后進行回調(diào),此時對應的依賴注入已經(jīng)完成,即在調(diào)用InitializingBean的afterPropertiesSet()方法或對應init-method方法之后。

postProcessBeforeInitialization方法的返回值會被Spring容器作為處理后的Bean注冊到容器中。如果你在postProcessBeforeInitialization方法中重新構造了一個Bean進行返回,而不是返回參數(shù)中的bean;那么你返回的Bean將會被注冊到Spring容器中。而原來在Spring中配置的Bean(被Spring實例化的Bean)將會被覆蓋。

一旦這兩個方法返回null,就不會執(zhí)行后面的postProcessBefore/AfterInitialization,(在applyBeanPostProcessorsBeforeInitialization中)

?
1
2
3
4
5
6
7
for(Iterator var4 = this.getBeanPostProcessors().iterator(); var4.hasNext(); result = current) {
  BeanPostProcessor processor = (BeanPostProcessor)var4.next();
  current = processor.postProcessBeforeInitialization(result, beanName);
  if (current == null) {
    return result;
  }
}

步驟:

populateBean給Bean賦值

initializeBean{ applyBeanPostProcessorsBeforeInitialization,

? invokeInitMethods, // 自定義初始化

? applyBeanPostProcessorsAfterInitialization}

底層使用

bean賦值,bean注入,@autowire,生命周期注解功能,@Async

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

原文鏈接:https://www.cnblogs.com/jimmyhe/p/13661809.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩国产精品一区二区 | 精品国产乱码久久久久久牛牛 | 午夜激情影视 | 亚洲精品久久久久国产 | 久久久久久久免费观看 | 午夜精品久久久 | 久久国产经典视频 | 日本高清不卡视频 | 午夜视频在线免费观看 | 国产亚洲精品精品国产亚洲综合 | 欧美va天堂| 一区二区三区高清 | 国产一区二区三区久久久久久久久 | 激情小网站| 91中文在线 | 欧美在线播放 | 亚洲国产精品一区二区久久 | 午夜精品久久久久久久 | 99免费视频 | 日本一本视频 | 日韩福利在线 | 中文字幕大全 | 欧美天堂 | 国产成人精品免高潮在线观看 | 中国大陆一级毛片 | 精品无人乱码一区二区三区的优势 | 亚洲免费在线 | 欧美成人免费看 | 欧美精品综合 | 日韩在线电影一区 | 成人一区二区在线 | 国产成人毛片 | 一区二区三区四区电影 | 成人精品鲁一区一区二区 | 日本精品视频在线观看 | 亚洲国产aⅴ精品一区二区 少妇一级片免费看 | 国产毛片av| 欧美久久综合 | 午夜激情影院 | 91偷拍精品一区二区三区 | 91正在播放 |