Spring与Restful整合才是微架构的核心,虽然在整个SpringBoot(SpringCloud)之中提供有大量的服务方便整合,但是这些整合都不如Rest重要,因为Rest是整个在微架构之中进行通讯的基础模式。那么对于Rest首先必须对其有一个最为核心的解释:利用JSON实现数据的交互处理。而且Spring里面提供有一个非常强大的RestTemplate操作模板,利用此模板可以非常轻松的实现Rest的Json数据与各种对象间的自动转换。
在默认状态下Spring里面针对Rest的处理使用的都是jackson开发支持包。
1.1、使用RestTemplate调用Rest服务
由于Rest属于分布式的项目开发环境,所以本次进行项目建立的时候一共建立有三个子模块:
-
microboot-restful-api:作为公共的类定义,例如:可以将所有的VO类定义在此项目之中
-
microboot-restful-provider:作为服务提供者,这次的服务提供者提供两个服务(获得对象、增加对象)
-
microboot-restful-consumer:作为服务的消费者,消费者就是利用RestTemplate实现Rest服务的调用以及对象转换
1、【microboot-restful-api】建立一个公共的VO类对象:
package cn.mldn.microboot.vo;
import java.io.Serializable;
import java.util.Date;
public class Member implements Serializable {
private static final long serialVersionUID = 5879393512553198949L;
private Long mid;
private String name;
private Integer age;
private Double salary;
private Date birthday;
......(省略get、set和 toString 方法)......
}
2、【microboot-restful-provider】修改pom.xml配置文件,去引用api模块:
<dependency>
<groupId>cn.mldn</groupId>
<artifactId>microboot-restful-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
3、【microboot-restful-provider】建立一个控制器实现Rest服务处理:
package cn.mldn.microboot.controller;
import cn.mldn.microboot.vo.Member;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@RestController
public class MemberController {
@RequestMapping(value = "/member/add")
public Object add(Member member){
System.err.println("【MemberController.add()接收对象】" + member);
return true;
}
@RequestMapping(value = "/member/get")
public Member get(long mid){
Member vo = new Member();
vo.setMid(mid);
vo.setName("mldn -" + mid);
vo.setBirthday(new Date());
vo.setSalary(9999.99);
vo.setAge(16);
return vo;
}
}
4、【microboot-restful-provider】定义程序启动类,启动服务,而后测试当前服务是否可用:
5、【microboot-restful-consumer】如果要进行Rest操作,那么一定要注意使用一个RestTemplate模板完成处理,所以首先要建立一个程序配置类,进行RestTemplate模板对象创建:
package cn.mldn.microboot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestConfig {
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
6、【microboot-restful-consumer】修改application.yml配置端口:
server:
port: 80
7、【microboot-restful-consumer】编写测试程序类测试远程Rest服务是否可用:
package cn.mldn.microboot;
import cn.mldn.microboot.vo.Member;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test