SpringBoot獲取ApplicationContext的3種方式
ApplicationContext是什么?
簡單來說就是Spring中的容器,可以用來獲取容器中的各種bean組件,注冊監(jiān)聽事件,加載資源文件等功能。
Application Context獲取的幾種方式
1 直接使用Autowired注入
@Component
public class Book1 {
@Autowired
private ApplicationContext applicationContext;
public void show (){
System.out.println(applicationContext.getClass());
}
}
2 利用 spring4.3 的新特性
使用spring4.3新特性但是存在一定的局限性,必須滿足以下兩點:
1) 構(gòu)造函數(shù)只能有一個,如果有多個,就必須有一個無參數(shù)的構(gòu)造函數(shù),此時,spring會調(diào)用無參的構(gòu)造函數(shù)
2) 構(gòu)造函數(shù)的參數(shù),必須在spring容器中存在
@Component
public class Book2 {
private ApplicationContext applicationContext;
public Book2(ApplicationContext applicationContext){
System.out.println(applicationContext.getClass());
this.applicationContext=applicationContext;
}
public void show (){
System.out.println(applicationContext.getClass());
}
}
3 實現(xiàn)spring提供的接口 ApplicationContextAware
spring 在bean 初始化后會判斷是不是ApplicationContextAware的子類,調(diào)用setApplicationContext()方法, 會將容器中ApplicationContext傳入進去
@Component
public class Book3 implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void show (){
System.out.println(applicationContext.getClass());
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
結(jié)果獲取三次:
class org.springframework.context.annotation.AnnotationConfigApplicationContext class org.springframework.context.annotation.AnnotationConfigApplicationContext class org.springframework.context.annotation.AnnotationConfigApplicationContext
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- springboot如何獲取applicationContext?servletContext
- SpringBoot?容器刷新前回調(diào)ApplicationContextInitializer
- SpringBoot?ApplicationContext接口深入分析
- SpringBoot如何使用applicationContext.xml配置文件
- Springboot如何獲取上下文ApplicationContext
- springboot ApplicationContextInitializer的三種使用方法小結(jié)
- SpringBoot如何使用ApplicationContext獲取bean對象
- SpringBoot ApplicationContextAware拓展接口使用詳解
相關文章
Java之不通過構(gòu)造函數(shù)創(chuàng)建一個對象問題
這篇文章主要介紹了Java之不通過構(gòu)造函數(shù)創(chuàng)建一個對象問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
java子類調(diào)用父類的方法中包含子類重寫的實例方法
在本篇文章里小編給大家整理了關于java子類調(diào)用父類的方法中包含子類重寫的實例方法以及相關知識點,需要的朋友們可以學習下。2019-09-09

