WhiteIpCache.java 1.98 KB
package com.bsth.data;

import com.bsth.Application;
import com.bsth.XDApplication;
import com.bsth.entity.WhiteIp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.concurrent.TimeUnit;

@Component
public class WhiteIpCache implements InitializingBean {

    private final static Logger log = LoggerFactory.getLogger(WhiteIpCache.class);

    @Autowired
    private JdbcTemplate jdbcTemplate;

    private static List<WhiteIp> whiteIps;

    public static List<WhiteIp> getWhiteIps() {
        return whiteIps;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        Application.mainServices.scheduleWithFixedDelay(new WhiteIpDataLoader(), 0, 1, TimeUnit.MINUTES);
    }

    class WhiteIpDataLoader extends Thread {

        @Override
        public void run() {
            if (SystemParamCache.getEnabledWhiteIp()) {
                loadData();
            }
        }

        /**
         * @Title: loadAllData
         * @Description: TODO(加载所有数据)
         */
        public int loadData() {
            try {
                log.info("开始加载IP白名单数据..,");
                loadWhiteIp();
                log.info("加载IP白名单数据成功!,");
            } catch (Exception e) {
                log.error("加载IP白名单数据时出现异常,", e);
            }
            return 0;
        }

        /**
         * 加载IP白名单
         */
        public void loadWhiteIp() {
            List<WhiteIp> result = jdbcTemplate.query("select * from control_interface.bsth_c_white_ip where valid_date > now()", BeanPropertyRowMapper.newInstance(WhiteIp.class));
            whiteIps = result;
        }
    }
}