javaweb项目启动后自动查询数据库并刷新数值
生活随笔
收集整理的這篇文章主要介紹了
javaweb项目启动后自动查询数据库并刷新数值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、使用quartz定時器
1、通過反射獲取屬性,然后刷入數據
public void flashConfigParam(){//獲取要刷新的類Class<?> clazz = Constants.class;、//獲取數據庫的值List<SysConfig> sysConfigs = getAll();for (SysConfig sc : sysConfigs) {if(sc == null || StringUtils.isBlank(sc.getName())){continue;}try {//獲取類所對應的類的屬性Field field = clazz.getDeclaredField(sc.getName().trim());if(field != null){String type = field.getType().getName();switch (type) {case "java.lang.Boolean":field.set(clazz, Boolean.valueOf("true".equals(sc.getValue())));break;case "java.lang.String":field.set(clazz, sc.getValue());break;case "java.lang.Integer":field.set(clazz, Integer.valueOf(sc.getValue()));break;case "java.lang.Double":field.set(clazz, Double.valueOf(sc.getValue()));break;default:break;}}} catch (Exception e) {logger.error("刷新配置文件SYSCONFIG-->" + sc.getName() + " 異常!", e);}}logger.warn("刷新配置文件SYSCONFIG完成:"+HKDateUtil.formatDateTime(new Date()));}2、配置spring的定時任務
<bean id="flashSysConfigJobTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"><property name="jobDetail"><bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><!--指定調用的類 --><property name="targetObject"><ref bean="sysConfigService" /></property><!--指定調用的方法 --><property name="targetMethod"><value>flashConfigParam</value></property></bean></property><!--啟動后運行 --><property name="startDelay" value="5000"/><property name="repeatInterval" value="500"/><property name="repeatCount" value="0"/><!--間隔5分鐘 --><!--<property name="repeatInterval" value="300000"/>--></bean>二、使用PostConstruct注解
Servlet中增加了兩個影響Servlet生命周期的注解,@PostConstruct和@PreDestroy
例如:
@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,并且只會被服務器執(zhí)行一次。PostConstruct在構造函數之后執(zhí)行,init()方法之前執(zhí)行。PreDestroy()方法在destroy()方法知性之后執(zhí)行
spring中的執(zhí)行順序:
@Autowired >> @PostConstruct
總結
以上是生活随笔為你收集整理的javaweb项目启动后自动查询数据库并刷新数值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java面试常见问题
- 下一篇: jq定制上传按钮,选择文件就上传