最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot如何獲取applicationContext?servletContext

 更新時(shí)間:2023年01月12日 10:36:15   作者:ypp91zr  
這篇文章主要介紹了springboot如何獲取applicationContext?servletContext問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot獲取applicationContext servletContext

今天在做一個(gè)quartz定時(shí)任務(wù)的時(shí)候,要獲取servletContext。

想的是獲取到request也可以,但這個(gè)定時(shí)任務(wù)不會(huì)發(fā)起請求,是定時(shí)從數(shù)據(jù)庫查數(shù)據(jù),所以request不符合場景。

然后就想到了servletContext。

但是在過程中用了很多種方式都獲取不到。因?yàn)槭窃谄胀?,沒有controller這種request。

網(wǎng)上的其他方式配置

1.servletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();

這種不行,不知道是不是版本問題,目前已失效。

2.在web.xml里面配置

<listener>
? ? ? ? <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

然后獲取,也不可行,不需要另行配置xml,因?yàn)槭褂玫膕pring boot

解決辦法

package com.pinyu.system.config;
 
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
 
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
 
/**
 * @author ypp 創(chuàng)建時(shí)間:2018年10月17日 上午11:59:11
 * @Description: TODO(用一句話描述該文件做什么)
 */
@Component
@WebListener
public class SpringBeanTool implements ApplicationContextAware, ServletContextListener {
 
	/**
	 * 上下文對象實(shí)例
	 */
	private ApplicationContext applicationContext;
 
	private ServletContext servletContext;
 
	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		this.applicationContext = applicationContext;
	}
 
	/**
	 * 獲取applicationContext
	 * 
	 * @return
	 */
	public ApplicationContext getApplicationContext() {
		return applicationContext;
	}
 
	/**
	 * 獲取servletContext
	 * 
	 * @return
	 */
	public ServletContext getServletContext() {
		return servletContext;
	}
 
	/**
	 * 通過name獲取 Bean.
	 * 
	 * @param name
	 * @return
	 */
	public Object getBean(String name) {
		return getApplicationContext().getBean(name);
	}
 
	/**
	 * 通過class獲取Bean.
	 * 
	 * @param clazz
	 * @param <T>
	 * @return
	 */
	public <T> T getBean(Class<T> clazz) {
		return getApplicationContext().getBean(clazz);
	}
 
	/**
	 * 通過name,以及Clazz返回指定的Bean
	 * 
	 * @param name
	 * @param clazz
	 * @param <T>
	 * @return
	 */
	public <T> T getBean(String name, Class<T> clazz) {
		Assert.hasText(name, "name為空");
		return getApplicationContext().getBean(name, clazz);
	}
 
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		this.servletContext = sce.getServletContext();
	}
 
	@Override
	public void contextDestroyed(ServletContextEvent sce) {
 
	}
 
}

這樣其他地方照樣可以直接注入隨時(shí)獲取使用

一個(gè)是實(shí)現(xiàn)了監(jiān)聽器在監(jiān)聽器初始化的時(shí)候獲取ServletContext ,一個(gè)是spring初始化的時(shí)候獲取ApplicationContext 

當(dāng)然也可以只實(shí)現(xiàn)監(jiān)聽器就可以的。也可以獲取到ApplicationContext,spring早就為我們寫好了,WebApplicationContextUtils.getRequiredWebApplicationContext();

看源碼

獲取到的是WebApplicationContext,WebApplicationContext繼承ApplicationContext

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring框架學(xué)習(xí)之AOP詳解

    Spring框架學(xué)習(xí)之AOP詳解

    這篇文章主要介紹了Spring框架學(xué)習(xí)之AOP詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)Spring框架的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-05-05
  • 淺談String類型等值比較引起的“==”、“equals()”和“hashCode”思考

    淺談String類型等值比較引起的“==”、“equals()”和“hashCode”思考

    這篇文章主要介紹了淺談String類型等值比較引起的“==”、“equals()”和“hashCode”思考。具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 詳談jvm線程??臻g內(nèi)存分配位置

    詳談jvm線程棧空間內(nèi)存分配位置

    這篇文章主要介紹了jvm線程??臻g內(nèi)存分配位置,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 基于SpringBoot使用MyBatis插件的問題

    基于SpringBoot使用MyBatis插件的問題

    MyBatis-Plus并不能為我們解決所有問題,例如一些復(fù)雜的SQL,多表聯(lián)查,我們就需要自己去編寫代碼和SQL語句,我們該如何快速的解決這個(gè)問題呢,這個(gè)時(shí)候可以使用MyBatisX插件,今天小編給大家?guī)砹薙pringBoot使用MyBatis插件問題,感興趣的朋友一起看看吧
    2022-03-03
  • java下載指定文件并返回給前端返回流文件的實(shí)現(xiàn)步驟

    java下載指定文件并返回給前端返回流文件的實(shí)現(xiàn)步驟

    在Java中我們可以根據(jù)文件地址返回一個(gè)文件流,以便對文件進(jìn)行讀取、寫入等操作,下面這篇文章主要給大家介紹了關(guān)于java下載指定文件并返回給前端返回流文件的實(shí)現(xiàn)步驟,需要的朋友可以參考下
    2024-03-03
  • 本地安裝Nacos的踩坑過程及解決

    本地安裝Nacos的踩坑過程及解決

    這篇文章主要介紹了本地安裝Nacos的踩坑過程及解決,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java 源碼分析Arrays.asList方法詳解

    java 源碼分析Arrays.asList方法詳解

    這篇文章主要介紹了java 源碼分析Arrays.asList方法詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Java如何實(shí)現(xiàn)圖片裁剪預(yù)覽功能

    Java如何實(shí)現(xiàn)圖片裁剪預(yù)覽功能

    通常注冊賬戶上傳用戶圖像時(shí)需要進(jìn)行預(yù)覽,這篇文章就是教我們?nèi)绾斡?Java 實(shí)現(xiàn)圖片裁剪預(yù)覽功能,需要的朋友可以參考下
    2015-07-07
  • Java設(shè)計(jì)模式編程中簡單工廠與抽象工廠模式的使用實(shí)例

    Java設(shè)計(jì)模式編程中簡單工廠與抽象工廠模式的使用實(shí)例

    這篇文章主要介紹了Java設(shè)計(jì)模式編程中簡單工廠與抽象工廠模式的使用實(shí)例,簡單工廠與抽象工廠都可以歸類于設(shè)計(jì)模式中的創(chuàng)建型模式,需要的朋友可以參考下
    2016-04-04
  • Java編寫網(wǎng)絡(luò)聊天程序?qū)嶒?yàn)

    Java編寫網(wǎng)絡(luò)聊天程序?qū)嶒?yàn)

    這篇文章主要為大家詳細(xì)介紹了Java編寫網(wǎng)絡(luò)聊天程序?qū)嶒?yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論

额济纳旗| 锦屏县| 华阴市| 阿拉善左旗| 焉耆| 宿松县| 永安市| 阿拉善左旗| 从化市| 苍山县| 成都市| 霞浦县| 凤阳县| 青铜峡市| 普格县| 胶南市| 剑阁县| 开化县| 晴隆县| 丽江市| 井研县| 珠海市| 天峻县| 泸西县| 韶山市| 新河县| 玛纳斯县| 宁武县| 买车| 兴国县| 土默特左旗| 绍兴县| 曲周县| 莱阳市| 丹江口市| 忻城县| 井陉县| 开封县| 厦门市| 银川市| 武平县|