方式一:
实现InitializingBean接口,重写afterPropertiesSet方法,类采用@Component注入spring容器管理
:
已枚举类Map为例
private static Map<String, HashMap<String, EnumClass>> enumMap;
private static SomeService someService;
@Autowired
public void setSomeService(SomeService getSomeervice) {
this.someService = getSomeervice;
}
@Override
public void afterPropertiesSet() throws Exception {
enumMap = someService.init();
}
//就可以通过static方法直接调用了
public static I18nEnum getEnumsByEnumCode(String typeCode, String enumCode) {
if (Objects.isNull(enumMap.get(typeCode)) || Objects.isNull(enumMap.get(typeCode).get(enumCode))) {
return null;
}
return enumMap.get(typeCode).get(enumCode);
}
方式二:
实现ApplicationContextAware接口,重写setApplicationContext接口,类采用@Component注入spring容器管理:
以用户本地缓存为例:
public static Map<Long, String> map;
@Autowired
SomeService someService;
public UserCache(SomeService getService) {
this.someService= getService;
}
public static String getNameById(Long id) {
String name;
name = map.get(id);
return name;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
map = userService.selectList().stream().collect(Collectors.toMap(User::getId, User::getNickName));
}