動態(tài)獲取上下文和Bean

SpringContextUtil

package cn.czyfwpla.sys.config;

import org.springframework.context.ApplicationContext;

/**
 * @description: 獲取上下文環(huán)境
 * @author wonder
 * @date 2019/08/20 14:13
 */
public class SpringContextUtil {
    private static ApplicationContext applicationContext;

    //獲取上下文
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    //設置上下文
    public static void setApplicationContext(ApplicationContext applicationContext) {
        SpringContextUtil.applicationContext = applicationContext;
    }

    //通過名字獲取上下文中的bean
    public static Object getBean(String name){
        return applicationContext.getBean(name);
    }

    //通過類型獲取上下文中的bean
    public static Object getBean(Class<?> requiredType){
        return applicationContext.getBean(requiredType);
    }
}

在application中設置上下文

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        ConfigurableApplicationContext application = SpringApplication.run(Application.class, args);
        SpringContextUtil.setApplicationContext(application);
    }
}

通過springContextUtil獲取上下文環(huán)境或Bean

public class QQAuthenticationManager implements AuthenticationManager {

    private LoadUser loadUser;

    private UserService userService;

    private List<SimpleGrantedAuthority> authorities = new ArrayList<>();

    @Override
    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
        userService = (UserService)SpringContextUtil.getBean(UserService.class);
        loadUser = (LoadUser)SpringContextUtil.getBean(LoadUser.class);
        ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
        HttpSession session= attr.getRequest().getSession(true);
        String accessToken = authentication.getName();
        String openId = (String) authentication.getCredentials();
        session.setAttribute("qqOpenId",openId);
        SysUser sysUser = new SysUser();
        if (accessToken != null && openId != null) {
            sysUser = userService.getUserByQQOpenid(openId);
            if (sysUser == null){
                throw new UsernameNotFoundException("該用戶未注冊");
            }
        }
        return new UsernamePasswordAuthenticationToken(loadUser.loadUserByUsername(sysUser.getAccount()),null, authorities);
    }

}


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末可霎,一起剝皮案震驚了整個濱河市痘番,隨后出現的幾起案子歪脏,更是在濱河造成了極大的恐慌趁仙,老刑警劉巖趋艘,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颇蜡,死亡現場離奇詭異候醒,居然都是意外死亡馅精,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門旁涤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翔曲,“玉大人,你說我怎么就攤上這事劈愚⊥椋” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵菌羽,是天一觀的道長掠械。 經常有香客問我,道長注祖,這世上最難降的妖魔是什么猾蒂? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮是晨,結果婚禮上婚夫,老公的妹妹穿的比我還像新娘。我一直安慰自己署鸡,他們只是感情好案糙,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布限嫌。 她就那樣靜靜地躺著,像睡著了一般时捌。 火紅的嫁衣襯著肌膚如雪怒医。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天奢讨,我揣著相機與錄音稚叹,去河邊找鬼。 笑死拿诸,一個胖子當著我的面吹牛扒袖,可吹牛的內容都是我干的。 我是一名探鬼主播亩码,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼季率,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了描沟?” 一聲冷哼從身側響起飒泻,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吏廉,沒想到半個月后泞遗,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡席覆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年史辙,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佩伤。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡聊倔,死狀恐怖,靈堂內的尸體忽然破棺而出畦戒,到底是詐尸還是另有隱情方库,我是刑警寧澤结序,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布障斋,位于F島的核電站,受9級特大地震影響徐鹤,放射性物質發(fā)生泄漏垃环。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一返敬、第九天 我趴在偏房一處隱蔽的房頂上張望遂庄。 院中可真熱鬧,春花似錦劲赠、人聲如沸涛目。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霹肝。三九已至估蹄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沫换,已是汗流浹背臭蚁。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留讯赏,地道東北人垮兑。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像漱挎,于是被迫代替她去往敵國和親系枪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內容

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 15,911評論 2 11
  • 1.Spring整體架構 1)核心容器(Core Container) Core模塊识樱,主要包含了Spring框架基...
    Sponge1128閱讀 1,063評論 0 1
  • Spring容器高層視圖 Spring 啟動時讀取應用程序提供的Bean配置信息嗤无,并在Spring容器中生成一份相...
    Theriseof閱讀 2,812評論 1 24
  • 本來是準備看一看Spring源碼的。然后在知乎上看到來一個帖子怜庸,說有一群**自己連Spring官方文檔都沒有完全讀...
    此魚不得水閱讀 6,934評論 4 21
  • 7月計劃:01把這些社群活動都結束当犯。02 7月20日前,把李源的極簡精讀余下3部分搞定03 跟著第3次閱讀營割疾,開始...
    Muffin紛紛閱讀 294評論 0 1