我有一个休息控制器,在REST控制器内部,我想调用一个方法,每隔5秒更新一个数组列表ob对象。我每五秒更新一次列表,这样我就要检查一个请求参数数组列表数据。 下面是我的控制器类
@RestController
public class HomeController {
List<Model1> list1= new ArrayList<Model1>();
List<Model2> list2= new ArrayList<Model2>();
@Autowired
@Qualifier("restTemplateapi")
private RestTemplate restTemplateapi;
@Bean
public RestTemplate restTemplateapi() {
RestTemplateBuilder builderapi = new RestTemplateBuilder();
RestTemplate buildapi = builderapi.build();
return buildapi;
}
@Scheduled(fixedRate=5000)
public void get_list2(){
list2 = Arrays.asList(restTemplatestreetapi.getForObject("http:dataurl for list2", Model2[].class));
System.out.println(list2.get(0).getStatus()+ " is the staus of the first element:" );
}
@RequestMapping(value="/api",produces={MediaType.APPLICATION_JSON_VALUE},method=RequestMethod.GET)
public ResponseEntity<Map<String, Object>> getlist1(@RequestParam("lat")double lat,@RequestParam("lon") double lon,@RequestParam("id") int id){
list1=get_api(lat,lon,id);
status status_object=new status();
Map <String,List<Model1>> map1= new HashMap<String,List<Model1>>();
List<status> statuslist=new ArrayList<status>();
status_object.setCode("hi");
status_object.setMessage("good api call");
statuslist.add(status_object);
streetapilist.put("data",map1);
Map<String,List<status>> map2=new HashMap<String,List<status>>();
statusmap.put("status", map2);
Map<String, Object> combinedMap = new HashMap<String, Object>();
combinedMap.putAll(map1);
combinedMap.putAll(map2);
return new ResponseEntity<Map<String, Object>>(combinedMap,HttpStatus.OK);
}
@ResponseBody
public List<Model1> get_api(double lat,double lon,int id,String email){
List<Model1> list1 = Arrays.asList(restTemplatestreetapi.getForObject("http:dataurl for list1, Model1[].class));
return list1;
}
}
因此,在我的控制器中,我每隔5秒就要更新一次list2,因为无论何时对控制器进行调用,都要检查list2,然后继续返回list1。
但是现在我的sheduled方法get_list2甚至没有被触发,并且没有任何东西在控制台中打印。
感谢任何帮助。
答案 0 :(得分:1)
@EnableScheduling
确保创建后台任务执行程序。没有它,没有任何安排。
示例:
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class);
}
}