SpringBoot線上程中獲取容器中的Bean
在 Servlet API 中有一個 ServletContextListener 介面,它能夠監聽 ServletContext
物件的生命週期,實際上就是監聽 Web 應用的生命週期。
當Servlet 容器啟動或終止Web 應用時,會觸發ServletContextEvent 事件,該事件由
ServletContextListener 來處理。在 ServletContextListener
介面中定義了處理ServletContextEvent 事件的兩個方法。
contextInitialized(ServletContextEvent sce) :當Servlet 容器啟動Web
應用時呼叫該方法。在呼叫完該方法之後,容器再對Filter 初始化,並且對那些在Web 應用啟動時就需要被初始化的Servlet
進行初始化。 contextDestroyed(ServletContextEvent sce) :當Servlet 容器終止Web
應用時呼叫該方法。在呼叫該方法之前,容器會先銷燬所有的Servlet 和Filter 過濾器。
新建SpringBean獲取bean的幫助類
package com.rs.util.bean;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
public class SpringBean implements ServletContextListener {
private static WebApplicationContext springContext = null;
@Override
public void contextInitialized(ServletContextEvent sce) {
if (springContext == null) {
springContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
}
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
}
public static Object getBean(String name) {
return springContext.getBean(name);
}
public static <T> T getBean(Class<T> clazz) {
return springContext.getBean(clazz);
}
}
啟動類中引用
package com.rs.domain;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import com.rs.util.bean.SpringBean;
@Configuration
@ComponentScan("com.rs")
@EnableAutoConfiguration
public class SysConfiguration {
public static void main(String[] args) {
SpringApplication.run(SysConfiguration.class, args);
}
/**
*
* @return
*/
@Bean
public SpringBean getSpringContext() {
return new SpringBean();
}
}
在具體執行緒中獲取容器中的bean
package com.sino.task;
import com.sino.commons.context.SpringContext;
public class KafkaConsumerTask implements Runnable{
private CaseService caseService = SpringContext.getBean(CaseService.class);
@Override
public void run() {
}
}
相關推薦
SpringBoot線上程中獲取容器中的Bean
在 Servlet API 中有一個 ServletContextListener 介面,它能夠監聽 ServletContext 物件的生命週期,實際上就是監聽 Web 應用的生命週期。
一個類,有新增元素(add)和獲取元素數量(size)方法。 啟動兩個線程。線程1向容器中新增數據。線程2監聽容器元素數量,當容器元素數量為5時,線程2輸出信息並終止
override tac trace add syn countdown print import 數據 方式一: /** * 兩個線程要是可見的所以要加上votalile */public class Test_01 { public static void
spring容器啟動之我見(四、獲取容器和獲取容器中的bean)
1.我們經常會發現在我們的service中有註解而在dao上沒有註解 看圖 因為我們在spring容器初始化bean的時候,是把service當做一個bean ,而dao並不是一個bean,這是個人理解,如果有錯誤,歡迎大家指出。 2. 那我們總結一下那些算是spri
spring手動獲取容器中的bean
只需要定義一個bean,這個bean繼承ApplicationContextAware如下:public class SpringContextHolder implements ApplicationContextAware { private static A
三、獲取Spring容器及獲取容器中的Bean物件
Spring中的容器物件介面是ApplicationContext,其作用就是載入配置檔案,並初始化所有的Bean物件(容器啟動時)。其實現類主要有2個,分別為: ClassPathXmlApplicationContext:載入類路徑下的Spring
關於springboot請求攔截器中獲取不到bean的解決方式【轉載部分修改】
介紹: 在企業開發中無論是大的專案還是小的專案,所以的web介面都可能會遇到需要進行許可權驗證/登陸驗證/授權認證的攔截。我常用的做法就是將登陸資訊/許可權資訊存入redis,前端返回token,每次請求時進行驗籤;在進行驗籤時需要通過redis元件進行操作redis快取,
Spring源碼分析(十三)緩存中獲取單例bean
ould for 目的 存儲 不同 單例 color 正在 span 摘要:本文結合《Spring源碼深度解析》來分析Spring 5.0.6版本的源代碼。若有描述錯誤之處,歡迎指正。 介紹過FactoryBean的用法後,我們就可以了解bean加載的過程了。前面已
spring深入學習(十五) IOC 之從單例快取中獲取單例 bean
從這篇部落格開始我們開始載入 bean 的第一個步驟,從快取中獲取 bean,程式碼片段如下: Object sharedInstance = getSingleton(beanName); if (sharedInstance != null &&
緩存中獲取單例bean
trigge rac ets 頻率 性能 result cau str 一個 前言 上一篇文章FactoryBean的使用實際上是為了Bean的加載的詳細解析進行的介紹FactoryBean,從這篇文章開始,LZ會對Bean的加載過程進行詳細的講述,之前文章Bean的加載只
SpringBoot 專案如何在tomcat容器中執行
一. SpringBoot內嵌容器的部署方式 SpringBoot內部預設提供內嵌的tomcat容器,所以可以直接打成jar包,丟到伺服器上的任何一個目錄,然後在當前目錄下執行java -jar demo.jar即可執行,但是這種方式的執行退出程序就結束了。如
在過濾器filter中獲取spring管理bean的物件例項
有時我們需要在過濾器中獲取自動注入的物件的例項,如果在filter中也通過自動注入的方式往往得到的結果是null,如果通過new一個物件的話,有時可能是我們想要的結果,有時我們只是想獲取spring上下文中唯一的一個例項,spring預設是單例項模式,這樣的話通過自動注入和n
在彈框中獲取foreach中遍歷的id值,並傳遞給地址欄(方法2)
ges 應該 我們 png 地址欄 each 獲取 賦值 有時 1.php有時候我們需要再彈框中獲取foreach中遍歷的數據(例如id),在彈框中點擊按鈕並傳遞給地址欄跳轉。那麽應該怎麽做呢。第二種方法。 2. 可以在彈框中給出一個input hidden 點擊按鈕彈窗時
一般處理 程序中獲取Session中的值?
session對象 一般處理程序如果沒有引入using System.Web.SessionState;空間和IRequiresSessionState(或者IReadOnlySessionState)接口,那麽會出現session對象未將實例化的錯誤。一般處理 程序中獲取Session中的值?
Unity中獲取Animator中動畫片段的時長
sta bre 分享圖片 個數 watermark str size .get 開發 開發環境:Unity5.6.2 private Animator animator; public void GetLengthByName(string name) { floa
js中獲取input中所輸入的值
-c scrip tle utf-8 element 輸入 pla ont button <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>
graphql 在sub query 子查詢中獲取header中的token
以下內容基於graphql-yoga,它是基於apollo graphql server,並整合了 graphql-subscriptions/subscriptions-transport-ws: GraphQL subscriptions server graphql.js/gr
Java中獲取資料庫中的資料,獲取下拉列表中的資料, 獲取省、市、區的資料,根據上一層去控制下一層
$(function() { //validateRule(); getDept(); $("select[name='deptNamee']").change(function() { var deptCode = $("select[name='deptN
如何在JSP中獲取html中多個複選框中的內容
html中複選框的程式碼 愛好: 看書 <input type="checkbox" name="userHobby" id="checkbox" value="Read"/> <label for="checkbox"></label> 打球
js中獲取url中引數的方法
JS中獲取url中引數的方法(帶中文的也可以): function getQueryString(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); var r =
javascript中獲取url中的引數
function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search