解决重复代码,控制器内需要调用其他控制的方法,代码不想重复写一遍
第一步创建配置文件
package org.thingsboard.server.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory){
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(15000);
factory.setReadTimeout(5000);
return factory;
}
}
第二步:在控制注入RestTemplate
@RestController
@RequestMapping("/api")
@RequiredArgsConstructor
@Slf4j
@Service
public class TestController extends BaseController {
@Autowired
private RestTemplate restTemplate;
public function good() {
param.put("entityType", "DEVICE");
param.put("entityId", device.getId().getId());
param.put("scope", "SERVER_SCOPE");
param.put("keys", "active,lastActivityTime");
HttpHeaders headers = new HttpHeaders();
headers.add("X-Authorization", token);
HttpEntity httpEntity= new HttpEntity(param,headers);
String url = "http://localhost:8080/api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope}?keys={keys}";
ResponseEntity<String> responseEntity1 = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class, param);
String jsonStr = responseEntity1.getBody();
JSONArray jsonArray = JSONUtil.parseArray(jsonStr);
}