注意事项:
1、SpringBoot版本一定要和SpringCloud版本一定要匹配(详情阅读https://vsalw.com/1209.html)。
2、注意端口冲突
业务场景:
创建服务提供者A,并注册到注册中心,实现几个简答的方法
第一步、添加依赖,此处以及加入Ribbon依赖,注意此处springboot版本是1.4.3
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--可选:为了显示页面-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--可选:为了解决Java8的时间格式-->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<!--引入Eureka_Server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<!--引入ribbon-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<!-- 引入spring cloud的依赖 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
第二步、配置配置信息
server.port=8081
#配置EurekaServer的地址
eureka.client.serviceUrl.defaultZone=http://localhost:8899/eureka/
#配置次应用的名称
spring.application.name=aaa
注意:此处引用了thymeleaf,所以还需要在resources下面建立文件夹templates用来存放html页面,内容比如:这里是AAA的html页面。主要用于负载均衡测试时候显示区别。
第三步、在启动类加注解 @EnableDiscoveryClient。以及添加一些测试方法。下面是具体的Controller和实体,用于测试使用,随便写几个方法就行, 比如下面:
User类:
public class User implements Serializable {
private static final long serialVersionUID = -8444816602891478911L;
private Integer id;
private String name;
private LocalDateTime localDateTime;
UserController类:
@Controller
private static Map<Integer, User> userMap = new HashMap<>();
static {
User user = new User();
user.setId(0);
user.setName("A_User_A");
user.setLocalDateTime(LocalDateTime.now());
userMap.put(0, user);
User use2 = new User();
use2.setId(1);
use2.setName("B_User_A");
use2.setLocalDateTime(LocalDateTime.now());
userMap.put(1, use2);
}
@RequestMapping(value = "/index")
public String index() {
System.out.println("进来了。。。。。。。。。");
return "/index";
}
/**
* 返回
* @param name
* @return
*/
@RequestMapping(value = "/getStringMsg", method = RequestMethod.GET)
@ResponseBody
public String getStringMsg(@RequestParam("name") String name) {
return "hello:" + name + "_A";
}
/**
* 模拟返回用户实体
* //TODO 注意只能是POST
* @param id
* @return
*/
@RequestMapping(value = "/getUser", method = RequestMethod.POST)
@ResponseBody
public User getUser(@RequestParam("id") Integer id) {
return userMap.get(id);
}
/**
* 模拟返回用户实体列表
* //TODO 注意只能是POST
* @return
*/
@RequestMapping(value = "/getUserList", method = RequestMethod.POST)
@ResponseBody
public List<User> getUserList() {
List<User> arrayList = new ArrayList<>();
arrayList.add(userMap.get(0));
arrayList.add(userMap.get(1));
return arrayList;
}
此处测试方法如上,静态块主要是为了负载均衡区别使用。
注意事项: 此时服务注册中心,在启动这个项目,服务注册中心能够看到已经注册的服务AAA。为了测试负载均衡,我们把这个项目复制一份,当服务B. 其中端口和服务名称不一样,UserController中测试数据不一样。再启动B,服务注册中心可以看到2个服务。
源码下载:SpringCloud