我这里是以pb2为例,2和3不兼容,但是方法大致相同
1 pom依赖
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.googlecode.protobuf-java-format</groupId>
<artifactId>protobuf-java-format</artifactId>
<version>1.4</version>
</dependency>
2 编译pb文件
编译器在这里下载:https://repo1.maven.org/maven2/com/google/protobuf/protoc/2.6.1/
protoc --java_out=./path/pb ./xxx.proto
3 增加Converter
@Configuration
public class ProtobufHttpMessageConverterConfiguration {
@Bean
public ProtobufHttpMessageConverter protobufHttpMessageConverter() {
return new ProtobufHttpMessageConverter();
}
@Bean
public RestTemplate restTemplate(ProtobufHttpMessageConverter protobufHttpMessageConverter) {
List<HttpMessageConverter<?>> converterList = XXX // 此处是你要兼容的其他自定义的converter,比如json之类的,可以提前创建好
converterList.add(protobufHttpMessageConverter);
return new RestTemplate(converterList);
}
}
4 Controller添加
@RestController
@RequestMapping(value = "/xxx")
public class TencentRtaController {
@PostMapping(produces = "application/x-protobuf")
public @ResponseBody
XXXProtos.XXResponse rta(@RequestBody XXXProtos.XXRequest request) throws Exception {
// TODO Remove Mock
XXXProtos.XXResponse.Builder builder = XXXProtos.XXResponse.newBuilder();
builder.setResult(200);
return builder.build();
}
}