2017-04-11 15 views
0

私は残りのコントローラを持っていますが、RESTコントローラの中では、5秒ごとに配列リストOBオブジェクトを更新するメソッドを呼び出す必要がありました。要求パラメータの1つをアレイリストデータでチェックしてください。 は下記だから私のコントローラでは5秒ごとに、私は私のリスト2を更新したい私のコントローラクラスコントローラ内でスケジューラを呼び出す方法

@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; 



} 

} 

で呼び出しが、それはリスト2をチェックして、リスト1を返すに進みたいコントローラに行われるたびので。

私のスケジュールされたメソッドget_list2は一度でも起動されず、コンソールには何も印刷されません。

何か助けていただければ幸いです。

答えて

1

@EnableSchedulingバックグラウンドタスクエグゼキュータが確実に作成されます。それがなければ何も予定されていない。

例:

@SpringBootApplication 
@EnableScheduling 
public class Application { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class); 
    } 
} 
+0

ああ、私は完全にit.Thanksをたくさん使用可能にするのを忘れ市@ –

関連する問題