您的位置:首页 > 编程语言 > Java开发

spring不支持静态变量的注入解决方案

2016-06-30 11:46 344 查看
I18N工具类
public class I18N {

private static ApplicationContext ctx = BeanContext.ctx;

private static ReloadableResourceBundleMessageSource messageSource;

public static String getMessage(String key, Object... msgParam) {
if(ctx == null){
return key;
}
if(messageSource != null){
messageSource.getMessage(key, msgParam, key, Locale.CHINA);
}
Map<String, ReloadableResourceBundleMessageSource> map = ctx.getBeansOfType(ReloadableResourceBundleMessageSource.class);
if(map.size() == 0){
return key;
}
String beanKey = map.keySet().toArray(new String[]{})[0];
messageSource = map.get(beanKey);
return messageSource.getMessage(key, msgParam, key, Locale.CHINA);
}
}

BeanContext类
public class BeanContext implements ApplicationContextAware {

public static ApplicationContext ctx;

@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
BeanContext.ctx = context;
}

public static Object getBean(String beanName) {
return ctx.getBean(beanName);
}

public static <T> T getBean(Class<T> clazz) {
return ctx.getBean(clazz);
}

public static <T> Map<String, T> getBeansOfType(Class<T> type) {
Map<String, T> map = ctx.getBeansOfType(type);
if (map == null) {
map = new HashMap<String, T>();
}
return map;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 注入 静态变量