1 package com.shawnway.trade.marketdata.constants; 2 import java.sql.SQLException; 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.Timer; 6 import java.util.TimerTask; 7 8 import javax.persistence.EntityManager; 9 import javax.persistence.PersistenceContext; 10 11 import org.slf4j.Logger; 12 import org.slf4j.LoggerFactory; 13 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.stereotype.Component; 15 import org.springframework.web.bind.annotation.RequestMapping; 16 import org.springframework.web.bind.annotation.RequestMethod; 17 import org.springframework.web.bind.annotation.ResponseBody; 18 19 import com.shawnway.trade.marketdata.services.ChartService; 20 21 @Component 22 public class TimerConfig { 23 @Autowired 24 private ChartService chartService; 25 @PersistenceContext 26 private EntityManager em; 27 public TimerConfig(ChartService ct){//关键点解决 null指针错误, 28 chartService=ct; 29 } 30 // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period) 31 //每天的24:00:00执行迁移操作 32 public void init() { 33 Calendar calendar = Calendar.getInstance(); 34 calendar.set(Calendar.HOUR_OF_DAY, 15); // 控制时 35 calendar.set(Calendar.MINUTE, 3); // 控制分 36 calendar.set(Calendar.SECOND, 0); // 控制秒 37 38 Date time = calendar.getTime(); 39 40 Timer timer = new Timer(); 41 timer.scheduleAtFixedRate(new TimerTask() { 42 43 public void run() { 44 System.out.println("处理器开始运行"); 45 46 try { 47 moveStableMes(); 48 } catch (SQLException e) { 49 // TODO Auto-generated catch block 50 e.printStackTrace(); 51 } 52 } 53 }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行 54 } 55 @RequestMapping(value ="/move/moveStableMes", method = RequestMethod.GET) 56 @ResponseBody 57 public void moveStableMes() throws SQLException{ 58 //首先判定存储表是否存在,如果存在则转移数据 59 //如果不存在,先创建该存储数据表,在转移数据 60 //情况临时存储表。(临时表是用来保存当天的数据。) 61 Calendar c = Calendar.getInstance(); 62 int year=c.get(c.YEAR); 63 int month=c.get(c.MONTH)+1; 64 int today = c.get(c.DAY_OF_MONTH); 65 String tbname=""; 66 if(month<=9) 67 tbname="market_data_candlechart_"+Integer.toString(year)+"0"+Integer.toString(month);//数据库的名字 68 else 69 tbname="market_data_candlechart_"+Integer.toString(year)+Integer.toString(month);//数据库的名字 70 String temperTB="market_data_candlechart";//存储临时信息的表名 71 System.out.println("执行到了isExist"); 72 boolean flag=chartService.isExist(tbname);//判定对应的数据库是否存在 73 System.out.println("isExist结束"); 74 if(flag){//如果已经存在了,就可以直接把临时表中的数据插入到对应的表中 75 chartService.moveMesToOldTB(tbname,temperTB);//将临时表中的数据移动到tbname名称的表中。 76 }else{ 77 chartService.createTemperTB(tbname);//如果不存在,需要先创建一个对应名称的表 78 chartService.moveMesToOldTB(tbname,temperTB);//将临时表中的数据移动到tbname名称的表中。 79 } 80 //转移完数据后,清洗临时表的数据 81 chartService.deletTemperTB(temperTB); 82 } 83 84 }
1 package com.shawnway.trade.marketdata; 2 3 4 5 import java.io.FileNotFoundException; 6 7 import org.apache.catalina.Server; 8 import org.apache.catalina.Service; 9 import org.apache.catalina.connector.Connector; 10 import org.apache.catalina.valves.RemoteIpValve; 11 import org.springframework.beans.factory.annotation.Autowired; 12 import org.springframework.boot.SpringApplication; 13 import org.springframework.boot.autoconfigure.SpringBootApplication; 14 import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer; 15 import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer; 16 import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer; 17 import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; 18 import org.springframework.context.annotation.Bean; 19 import org.springframework.context.annotation.PropertySource; 20 import org.springframework.core.env.Environment; 21 22 import com.shawnway.trade.marketdata.constants.SystemConfig; 23 import com.shawnway.trade.marketdata.constants.TimerConfig; 24 import com.shawnway.trade.marketdata.core.collect.MarketDataCollectHandler; 25 import com.shawnway.trade.marketdata.core.ctp.CTPApiHandler; 26 import com.shawnway.trade.marketdata.core.ctp.CTPGatewayProxy; 27 import com.shawnway.trade.marketdata.core.ctp.CTPMarketDataHandler; 28 import com.shawnway.trade.marketdata.core.ctp.CTPZeroMQHandler; 29 import com.shawnway.trade.marketdata.core.es.EsMarketDataHandler; 30 import com.shawnway.trade.marketdata.core.es.EsunnyApiHandler; 31 import com.shawnway.trade.marketdata.core.es.EsunnyGatewayProxy; 32 import com.shawnway.trade.marketdata.core.sp.SharppointApiHandler; 33 import com.shawnway.trade.marketdata.core.sp.SharppointGatewayProxy; 34 import com.shawnway.trade.marketdata.core.sp.SpMarketDataHandler; 35 import com.shawnway.trade.marketdata.services.ChartService; 36 import com.shawnway.trade.marketdata.services.MapContainer; 37 38 @PropertySource({ "file:${config.dir}/config/web.properties" }) 39 @SpringBootApplication 40 public class ApplicationLauncher { 41 @Autowired 42 private Environment env; 43 @Autowired 44 private ChartService chartService; 45 46 @Bean(name = { "timerConfig" }, initMethod = "init") 47 public TimerConfig timerConfig() { 48 System.out.println("timerConfig已经开始运行了~"); 49 return new TimerConfig(chartService);//
chartService传入进去,解决空指针的错误
50 } 51 public static void main(String[] args) throws Exception { 52 System.setProperty("config.dir", System.getProperty("user.dir")); 53 final String dir = System.getProperty("config.dir"); 54 System.setProperty("logging.config", dir + "/config/logging.xml"); 55 SpringApplication.run(ApplicationLauncher.class, args); 56 } 57 }