注:多線程場景下,使用默認的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()