多線程中獲取bean對象

注:多線程場景下,使用默認的spring自動裝配無法獲取bean對象,此方案可以從context上下文中直接獲取bean。

1、創建類,實現ApplicationContextAware接口;

package com.bond.match.utils;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * Created with IntelliJ IDEA.
 * Date: 2018/1/11 0011
 * Time: 13:20
 * To change this template use File | Settings | File Templates.
 */
@Component
public class ApplicationContextProvider implements ApplicationContextAware {
    private static ApplicationContext context;

    private ApplicationContextProvider(){}

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }

    public  static <T> T getBean(Class<T> aClass){
        return context.getBean(aClass);
    }
}

2、多線程中的調用方式: .method()是bean對象的方法名稱

ApplicationContextProvider.getBean(AccountAssetService.class).method()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章