在应用程序启动时缓存数据库中的数据

时间:2017-01-05 00:37:48

标签: java caching spring-boot

我正在尝试为Web应用程序构建缓存,下面是我到目前为止的上述代码。必须在应用程序启动时加载此缓存。

@Service
public class CacheBuilder {

    private MultiKeyMap cache = new MultiKeyMap();

    @Autowired
    private ConfigurationDAO configurationDAO;

    public void loadConfigurations() {

        Map<String, Collection<Config>> map = null;
        try {
            if (cache != null || cache.isEmpty()) {

                map = configDAO.loadConfigs();
                map.forEach((k, v) -> {
                    v.forEach((c) -> {
                        cache.put(k, c.getAttributeName(), c.getAttributeValue());
                    });
                });
            }

        } catch (DaoException e) {
            throw new RuntimeException(e);
        }
    }

    public Object getValue(String key1, String key2) {
        return cache.get(key1, key2);
    }

    public void clearCache() {
        if (cache != null) {
            cache.clear();
        }
    }

    public String printCache() {

        return cache.toString();
    }

}

我目前正在使用spring boot应用程序,我正在尝试改进我的伪代码库以及我想要的内容。

  1. loadConfigurations()方法不应该暴露给任何人,所以没有人不小心调用它。
  2. 我希望理想情况下使用方法创建此类的单个实例作为静态?那会是最好的事吗?
  3. 如果我执行第2步,我该如何实现第1步?

    任何人都可以向我推荐一些指示吗?

0 个答案:

没有答案