本文已参与「新人创作礼」活动,一起开启掘金创作之路。
之前调用海康的接口 ,人家封装了自己的jar,用起来很方便 但是这周要调用充电桩接口,那个jar不兼容只能自己写方法
网上一搜都是项目的工具包下导入HttpClientUtil这个工具类,然后吧嗒吧嗒一大堆,感觉调用个接口得类死,这也不比。net快捷啊 不是java生态天下第一,狂吹java大法好吗 好在项目不急 ,自己慢慢在技术栈找 ,最后还真找到了 Feign注解 本来是调用微服务之间的接口,但是刚好也能顺便解决我调用第三方的接口,果然java大法好
1.首先的用spring家族的框架SpringBoot+SpringCloud
这块直接工具自动搭建,为了方便我把自己用的pom贴出来
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cps_parent</artifactId>
<groupId>com.jydw</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cps_cdz</artifactId>
<dependencies>
<!-- 与数据库操作相关的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.6</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.11</version>
</dependency>
<!--这个依赖已经包括JDBC依赖 generator+mybatis-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!--swagger-->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
<!--lombok用来简化实体类:需要安装lombok插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda-time.version}</version>
</dependency>
<!--采用Feign进行消费 充电桩接口-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
2.加上feign的依赖
上面的pom已经包含了 org.springframework.cloud spring-cloud-starter-openfeign
3.启动类加上@EnableFeignClients注解
4.新建service加上FeignClient注解
@FeignClient(name = "feignSerive", url = "${url}")
public interface FeignService {
@RequestMapping(value = "/using_state",method = RequestMethod.GET)
public String getState(@RequestParam(value = "token") String token);
@RequestMapping(value = "/energy_bill",method = RequestMethod.GET)
public String getEnergy(@RequestParam(value = "token") String token
,@RequestParam(value = "startTime") String startTime
,@RequestParam(value = "endTime") String endTime);
}
这上面FeignClient注解有两个参数 一个是name 一个是url 我的url是写在配置文件里 你也可以直接写http://47.110.12.97/apiservices/charging这种接口地址
后面的就和写rest接口一样了 方法名加RequestMapping注解 里面写接口名字和参数
5.在RestController调用
最后一步就和简单的调用服务处方法一样了
@Autowired
FeignService feignService;
@Value("${token}")
private String token;
注入服务处方法 直接调用 没及时参数即可
总结就是加上依赖,服务处直接写个地址 后面就和之前的代码风格完全一致 无论是代码量还是代码管理都比工具类的那种方法好上十倍 果然前人大树好乘凉