springboot2 跨控制器调用,使用RestTemplate 来解决

264 阅读1分钟

解决重复代码,控制器内需要调用其他控制的方法,代码不想重复写一遍

第一步创建配置文件


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

    
    }