文章目录
有时需要查出数据库的数据作为字典,直接静态注入是不行的,但是有办法可以实现。
直接上代码:
public class CodeUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(CodeUtils.class);
@Autowired
private CodeMapper codeMapper;
private static CodeUtils codeUtils;
@PostConstruct
public void init(){
codeUtils=this;
codeUtils.codeMapper=this.codeMapper;
}
public static HashMap<String,Code> generateHashMap(){
HashMap<String, Code> map = new HashMap<>();
List<Code> list = CodeUtils.codeUtils.codeMapper.selectByExample(new Code());
for (Code item: list) {
map.put(item.getSourceSystem(),item);
}
return map;
}
}
静态注入虽然好用,但是对于需要改变的数据,就不太合适,比较好的方法是用redis缓存,每次都直接获取也是很快的。
之前遇到过个问题,静态变量用起来是方便,但是即使数据库的值改了,这里的值还是不变,因为就启动的时候初始化一次。