第一步IDEA创建一个名字为cloud-mall的maven工程,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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cloud.mall</groupId>
<artifactId>cloud-mall</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>cloud-payment-nacos-8002</module>
<module>cloud-order-nacos-8003</module>
<module>cloud-base-framework</module>
</modules>
<packaging>pom</packaging>
<properties>
<spring-boot.version>2.2.2.RELEASE</spring-boot.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.cloud.mall</groupId>
<artifactId>cloud-base-framework</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
第二部创建一个公用基础模块cloud-base-framework
创建两个接口:OrderService和PaymentService
第三步分别创建cloud-payment-nacos-8002(服务提供者)cloud-order-nacos-8003(服务消费者)两个module
cloud-payment-nacos-8002 pom如下:
<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>cloud-mall</artifactId>
<groupId>com.cloud.mall</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-payment-nacos-8002</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.cloud.mall</groupId>
<artifactId>cloud-base-framework</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
</dependencies>
</project>
yml如下:
server:
port: 8002
spring:
application:
name: payment-nacos
cloud:
nacos:
discovery:
server-addr: localhost:8848
dubbo:
registry:
address: spring-cloud://localhost:8848
protocol:
name: dubbo
scan:
base-packages: com.cloud.mall.service
management:
endpoints:
web:
exposure:
include: "*"
启动类记得加上@EnableDiscoveryClient、@EnableDubbo
创建一个PaymentServiceImpl
package com.cloud.mall.service;
import com.cloud.mall.service.payment.PaymentService;
import org.apache.dubbo.config.annotation.Service;
@Service
public class PaymentServiceImpl implements PaymentService {
public String pay() {
return "---- paying-----";
}
}
cloud-order-nacos-8003 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>cloud-mall</artifactId>
<groupId>com.cloud.mall</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-order-nacos-8003</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
<groupId>com.cloud.mall</groupId>
<artifactId>cloud-base-framework</artifactId>
</dependency>
</dependencies>
</project>
yml:
server:
port: 8003
spring:
application:
name: order-nacos
cloud:
nacos:
discovery:
server-addr: localhost:8848
management:
endpoints:
web:
exposure:
include: "*"
dubbo:
registry:
address: spring-cloud://localhost:8848
启动函数加@EnableDiscoveryClient、@EnableDubbo
创建OrderServiceImpl
package com.cloud.mall.service;
import com.cloud.mall.service.order.OrderService;
import com.cloud.mall.service.payment.PaymentService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;
/**
* User: Wang Pengfei
* Date: 2020/4/3
* Time: 1:56 下午
* Description: No Description
*/
@Service
public class OrderServiceImpl implements OrderService {
@Reference
private PaymentService paymentService;
public String getOrder() {
String pay = paymentService.pay();
System.out.println(pay);
return pay;
}
}
创建OrderController
package com.cloud.mall.controller;
import com.cloud.mall.service.order.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* User: Wang Pengfei
* Date: 2020/4/3
* Time: 2:29 下午
* Description: No Description
*/
@RestController
@RequestMapping("/")
public class OrderController {
@Autowired
private OrderService orderService;
@GetMapping("")
public String order(){
return orderService.getOrder();
}
}
最后分别启动payment和order可以在nacos web界面看到两个服务:
最后访问http://localhost:8003
至此SpringCloud整合nacos和dubbo完成