**由于公司电脑限制,完全手敲,有单字错误望理解**
@component
@SuppressWarnings("static-access")
public class AppContext implements ApplicationContextAware{
private static Logger = loggerFactory.getLogger(AppContext.class);
private static AppConttext instance;
private static ApplicationContext applicationContext;
//下面这一步,是这个变成一个有双重功能的类,既有工具类的功能又有获取bean的功能
@PostConstruct
public void init(){
instance =this;
}
public static ApplicationContext getAppContext(){
return null!=instance.applicationContext?instance.applicationContext :null;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException{
AppContext.applicationContext = applicationContext;
}
//获得property
public static String getProperty(String key){
return instance.applicationContext.getBean(Environment.class).getProperty(key);
}
//三种方式获得bean
ApplicationContext之getBean方法详解
public static Object getBean(Stirng beanName){
return null != instance.applicationContext ? instance.applicationContext.getBean(beanName):null;
}
public static <T> T getBean(Class<T> cla){
return null != instance.applicationContext ? instance.applicationContext.getBean(cla):null;
}
public static <T> T getBean(String beanName ,Class<T> cla){
return null != instance.applicationContext ? instance.applicationContext.getBean(beanName,cla):null;
}
//获取redis 模板
@SuppressWarnings("unchecked")
public static RedisTemplate<String,Object> getRedisTemplate(){
return null != instance.applicationContext ? instance.applicationContext.getBean("redisTemplate",RedisTemplate.class):null;
}
//获取任意类的接口 例如
public static IndicatorDetatilService determineServiceByTopicCode(String topicCode){
return null != instance.applictionContext ? instanc.applicationContext.getBean("topicCode",IndicatorDetatilService .class):null;
}
//获取userToken
private static ThreadLocal <UserToken> userToken =new ThreadLocal<>();
public static UserToken getUserToken(){
return instance.userToken.get();
}
//设置token
public static void setUserToken(UserToken token){
instance.userToken.remove();
instance.userToken.set(token);
}
//设置请求线程id,标识这个请求流程的一个id
private static TreadLocal<Stirng> requestThreadId = new ThreadLocal<>();
public static String getRequestThreadId(){
return instance.requestThreadId.get();
}
public static void setRequestThreadId(String thxId){
instance.requestThread.remove();
instance.requestThreadId.set(thxId);
}
//获取请求开始时间
private static ThreadLocal<Date> startTime =new ThreadLocl<>();
public static Date getStartTime(){
return instance.startTime.get();
}
public static void setStartTime(Dat startTime){
instance.startTime.remove();
instance.startTime.set(startTime);
}
}