zoukankan      html  css  js  c++  java
  • 项目启动时,初始化参数到缓存@PostConstruct,init()

    package com.foen.system.service.impl;
    
    import java.util.Collection;
    import java.util.List;
    import javax.annotation.PostConstruct;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import com.foen.common.annotation.DataSource;
    import com.foen.common.constant.Constants;
    import com.foen.common.constant.UserConstants;
    import com.foen.common.core.redis.RedisCache;
    import com.foen.common.core.text.Convert;
    import com.foen.common.enums.DataSourceType;
    import com.foen.common.utils.StringUtils;
    import com.foen.system.domain.SysConfig;
    import com.foen.system.mapper.SysConfigMapper;
    import com.foen.system.service.ISysConfigService;
    
    /**
     * 参数配置 服务层实现
     * 
     * @author foen
     */
    @Service
    public class SysConfigServiceImpl implements ISysConfigService
    {
        @Autowired
        private SysConfigMapper configMapper;
    
        @Autowired
        private RedisCache redisCache;
    
        /**
         * 项目启动时,初始化参数到缓存
         */
        @PostConstruct
        public void init()
        {
            List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
            for (SysConfig config : configsList)
            {
                redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
            }
        }
    
        /**
         * 查询参数配置信息
         * 
         * @param configId 参数配置ID
         * @return 参数配置信息
         */
        @Override
        @DataSource(DataSourceType.MASTER)
        public SysConfig selectConfigById(Long configId)
        {
            SysConfig config = new SysConfig();
            config.setConfigId(configId);
            return configMapper.selectConfig(config);
        }
    
        /**
         * 根据键名查询参数配置信息
         * 
         * @param configKey 参数key
         * @return 参数键值
         */
        @Override
        public String selectConfigByKey(String configKey)
        {
            String configValue = Convert.toStr(redisCache.getCacheObject(getCacheKey(configKey)));
            if (StringUtils.isNotEmpty(configValue))
            {
                return configValue;
            }
            SysConfig config = new SysConfig();
            config.setConfigKey(configKey);
            SysConfig retConfig = configMapper.selectConfig(config);
            if (StringUtils.isNotNull(retConfig))
            {
                redisCache.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());
                return retConfig.getConfigValue();
            }
            return StringUtils.EMPTY;
        }
    
        /**
         * 查询参数配置列表
         * 
         * @param config 参数配置信息
         * @return 参数配置集合
         */
        @Override
        public List<SysConfig> selectConfigList(SysConfig config)
        {
            return configMapper.selectConfigList(config);
        }
    
        /**
         * 新增参数配置
         * 
         * @param config 参数配置信息
         * @return 结果
         */
        @Override
        public int insertConfig(SysConfig config)
        {
            int row = configMapper.insertConfig(config);
            if (row > 0)
            {
                redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
            }
            return row;
        }
    
        /**
         * 修改参数配置
         * 
         * @param config 参数配置信息
         * @return 结果
         */
        @Override
        public int updateConfig(SysConfig config)
        {
            int row = configMapper.updateConfig(config);
            if (row > 0)
            {
                redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
            }
            return row;
        }
    
        /**
         * 批量删除参数信息
         * 
         * @param configIds 需要删除的参数ID
         * @return 结果
         */
        @Override
        public int deleteConfigByIds(Long[] configIds)
        {
            int count = configMapper.deleteConfigByIds(configIds);
            if (count > 0)
            {
                Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*");
                redisCache.deleteObject(keys);
            }
            return count;
        }
    
        /**
         * 清空缓存数据
         */
        @Override
        public void clearCache()
        {
            Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*");
            redisCache.deleteObject(keys);
        }
    
        /**
         * 校验参数键名是否唯一
         * 
         * @param config 参数配置信息
         * @return 结果
         */
        @Override
        public String checkConfigKeyUnique(SysConfig config)
        {
            Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId();
            SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey());
            if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue())
            {
                return UserConstants.NOT_UNIQUE;
            }
            return UserConstants.UNIQUE;
        }
    
        /**
         * 设置cache key
         * 
         * @param configKey 参数键
         * @return 缓存键key
         */
        private String getCacheKey(String configKey)
        {
            return Constants.SYS_CONFIG_KEY + configKey;
        }
    }
    

      

  • 相关阅读:
    Linux软件安装之JDK的安装
    VMWARE虚拟机安装系统提示CPU已被客户机操作系统禁用和secureCUT乱码
    联网配置及静态更改
    全文搜索技术--Solr7.1之配置中文分析器
    全文搜索技术--solr7.1之mysql的安装步骤
    建立主从的九大步及配置哨兵
    mysql 模糊匹配优化(全文索引)
    微服务架构的身份验证解决方案
    spring声明式事务回滚
    spring 通过@responsebody接收多个对象参数
  • 原文地址:https://www.cnblogs.com/gzhbk/p/14662758.html
Copyright © 2011-2022 走看看