一、说明
1.IDE这里使用的是IntelliJ IDEA
2.项目为Demo级别,方便新手入门理解
3.线上代码:https://github.com/xwh255/springCloud.git
二、项目创建
1.创建注册中心
将application.properties改为application.yml(这里不改也行,只是改为YAML格式更便捷)
增加pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
application.yml配置如下:
server:
port: 8080
spring:
application:
name: register
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8080/eureka/
DemoApplication添加注解@EnableEurekaServer
@EnableEurekaServer
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
启动项目,查看效果:http://localhost:8080
2.创建生产者(服务提供者)
重复项目创建1步骤,创建用户管理,以下为不同操作
增加pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
application.yml配置如下:
server:
port: 8082
spring:
application:
name: user-service
eureka:
client:
service-url:
defaultZone: http://localhost:8080/eureka/
增加controller和service包
增加UserController.java
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
UserService userService;
@GetMapping("list")
public String list(){
return userService.list();
}
}
增加UserService.java
@Service
public class UserService {
public String list(){
return "[{uid:1,name:'zhangsan'},{uid:2,name:'lisi'}]";
}
}
DemoApplication不做修改
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
启动项目,查看效果:http://localhost:8082/user/list
这个时候我们已经向注册中心注册了一个用户管理,切换到1打开的页面看看效果
重复项目创建2步骤,创建订单管理
增加pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
application.yml配置如下:
server:
port: 8081
spring:
application:
name: order-service
eureka:
client:
service-url:
defaultZone: http://localhost:8080/eureka/
增加controller和service包
增加OrderController.java
@RestController
@RequestMapping("order")
public class OrderController {
@Autowired
OrderService orderService;
@GetMapping("list")
public String list(){
return orderService.list();
}
}
增加OrderService.java
@Service
public class OrderService {
public String list(){
return "[{no:1,time:2018},{no:2,time:2019}]";
}
}
DemoApplication不做修改
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
启动项目,查看效果:http://localhost:8081/order/list
这个时候我们已经向注册中心注册了一个用户管理,切换到1打开的页面看看效果
重复项目创建2步骤,提供对外接口
增加pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
application.yml配置如下:
server:
port: 8083
spring:
application:
name: user-web
eureka:
client:
service-url:
defaultZone: http://localhost:8080/eureka/
增加consumer和controller包
增加OrderConsumer.java
@FeignClient("order-service")
public interface OrderConsumer {
@GetMapping("/order/list")
String list();
}
增加UserConsumer.java
@FeignClient("user-service")
public interface UserConsumer {
@GetMapping("/user/list")
String list();
}
增加OrderController.java
@RestController
@RequestMapping("order")
public class OrderController {
@Autowired
RestTemplate restTemplate;
@GetMapping("orderList")
public String orderList(){
return "consumer获取信息:"+restTemplate.getForObject("http://order-service/order/list",String.class);
}
}
增加TestController.java
@RestController
@RequestMapping("test")
public class TestController {
@Autowired
private UserConsumer userConsumer;
@Autowired
private OrderConsumer orderConsumer;
@GetMapping("show")
public String show(){
String user = userConsumer.list();
String order = orderConsumer.list();
return String.format("consumer获取信息:用户信息:%s,订单信息:%s",user,order);
}
}
增加UserController.java
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
RestTemplate restTemplate;
@GetMapping("userlist")
public String userlist(){
return "consumer获取信息:"+restTemplate.getForObject("http://user-service/user/list",String.class);
}
}
DemoApplication修改如下:
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
需要说明:这里使用两个调用方式,即一种是使用RestTemplate,一种是使用插件openfeign
启动项目,查看效果:
http://localhost:8083/user/userlist
http://localhost:8083/order/orderList
http://localhost:8083/test/show
这个时候我们已经向注册中心注册了一个用户管理,切换到1打开的页面看看效果