隨筆-112  評論-73  文章-0  trackbacks-0
          有一個自動備份mysql 數據庫的需求,windows 下可以寫一個bat文件,然后加入到計劃任務中設置執行,可是偉大的Windows系統加入計劃任務有時間卻不執行,而且設置計劃任務也挺復雜(寫腳本把執行備份的腳本加入計劃中)。那就用程序寫一個吧備份的功能吧。還是調用備份的腳本,自動任務部分使用Spring3的@Scheduled來實現。
          pom.xml文件中依賴的jar:
           <dependencies>
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-context</artifactId>
                      <version>3.1.4.RELEASE</version>
                  </dependency>

                  <dependency>
                      <groupId>org.quartz-scheduler</groupId>
                      <artifactId>quartz</artifactId>
                      <version>1.8.5</version>
                  </dependency>
          </dependencies>
          spring-config.xml配置如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
                 xmlns:task
          ="http://www.springframework.org/schema/task"
                 xmlns:context
          ="http://www.springframework.org/schema/context"
                 xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/task
                      http://www.springframework.org/schema/task/spring-task-3.1.xsd http://www.springframework.org/schema/context
                      http://www.springframework.org/schema/context/spring-context-3.1.xsd"
          >
              <context:component-scan base-package="cn.test" />
              <task:annotation-driven/>
          </beans>

          定義一個接口,寫一個實現類。
          package cn.test;

          /**
           * Created by libo on 13-12-18.
           
          */
          public interface SchedulerService {
              void doSome();
          }
          package cn.test;

          import org.springframework.scheduling.annotation.Scheduled;
          import org.springframework.stereotype.Component;

          import java.io.*;
          import java.util.Calendar;

          /**
           * Created by libo on 13-12-18.
           
          */
          @Component
          public class SchedulerServiceImpl implements SchedulerService {

              @Scheduled(cron = "0/5 * *  * * ? ")   //每5秒執行一次
              @Override
              public void doSome() {
                  System.out.println("do soming" + Calendar.getInstance().getTime());
                  Runtime runtime = Runtime.getRuntime();
                  Process p = null;
                  FileWriter fw = null;
                  try {
                      //此處執行的是ipconfig命令,可以換成任何cmd 里的命令。
                      p = runtime.exec("cmd /c ipconfig /all");
                      BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream(), "GBK"));
                      // 將命令執行結果保存到文件中
                      fw = new FileWriter(new File("C:/temp/cmdout.txt"));
                      String line = null;
                      while ((line = reader.readLine()) != null) {
                          fw.write(line + "\n");
                      }
                      fw.flush();
                  } catch (IOException e) {
                      e.printStackTrace();
                  } finally {
                      if (p != null) {
                          p.destroy();
                      }
                      try {
                          if (fw != null)
                              fw.close();
                          if (p != null)
                              p.getOutputStream().close();
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
                  System.out.println("do soming" + Calendar.getInstance().getTime());
              }

          }

          測試類(注意:使用junit是不能測試自動任務地!)
          package cn.test;

          import org.springframework.context.ApplicationContext;
          import org.springframework.context.support.ClassPathXmlApplicationContext;

          /**
           * Created by libo on 13-12-18.
           
          */
          public class Test {

              public static void main(String[] args){
                  ApplicationContext context = new ClassPathXmlApplicationContext("/spring-config.xml");
                  System.out.println("請等待5秒讓任務飛一會兒!");
              }
          }

          end.
          posted on 2013-12-18 16:35 Libo 閱讀(806) 評論(0)  編輯  收藏 所屬分類: 其他
          主站蜘蛛池模板: 寿阳县| 永丰县| 保定市| 渭南市| 永善县| 余干县| 潼南县| 牟定县| 通海县| 阳西县| 鸡东县| 沛县| 白河县| 高陵县| 南平市| 繁昌县| 新乐市| 龙陵县| 太原市| 黑水县| 高碑店市| 桐柏县| 长治市| 肥西县| 县级市| 唐河县| 会东县| 盈江县| 元氏县| 荃湾区| 炎陵县| 台东市| 霍林郭勒市| 九龙县| 赫章县| 孝昌县| 兴宁市| 南丰县| 建湖县| 观塘区| 南丹县|