package com.vincent.rsf.httpaudit.service; import com.vincent.rsf.httpaudit.mapper.HttpAuditConfigMapper; import com.vincent.rsf.httpaudit.props.HttpAuditDbConfigHolder; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import javax.annotation.PostConstruct; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 审计配置刷新 */ @Slf4j public class HttpAuditDbConfigService { private final HttpAuditConfigMapper httpAuditConfigMapper; public HttpAuditDbConfigService(HttpAuditConfigMapper httpAuditConfigMapper) { this.httpAuditConfigMapper = httpAuditConfigMapper; } @PostConstruct public void init() { refresh(); } @Scheduled(fixedDelayString = "${http-audit.db-config-refresh-ms:60000}") public void refresh() { try { List> rows = httpAuditConfigMapper.listEnabledConfig(); Map map = new HashMap<>(); for (Map row : rows) { Object keyObj = row.get("config_key"); if (keyObj == null) { continue; } String key = String.valueOf(keyObj).trim(); if (key.isEmpty()) { continue; } Object valObj = row.get("config_val"); map.put(key, valObj == null ? "" : String.valueOf(valObj)); } HttpAuditDbConfigHolder.replace(map); } catch (Exception e) { log.warn("http-audit 配置刷新失败,使用内存/默认配置", e); } } }