1、搭建父工程
在idea中通过maven构建项目,搭建好之后删除src文件目录,然后修改pom文件。
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
引入springboot:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
以及打包插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2、添加子模块api、provider、consumer
该模块用户提供接口。
api模块中编写接口:
public interface IUser {
String say();
}
其中provider和consumer两个子模块都需要依赖api模块。在他们两个的pom中添加依赖。
<dependency>
<groupId>com.hyperchain</groupId>
<artifactId>api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
以及
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--dubbo-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--zkclient-->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3、provider、consumer模块的resource下面添加application.properties
provider:
server.port=8083
spring.application.name=provider
spring.dubbo.registry=zookeeper://192.168.225.143:2181
spring.dubbo.consumer.check=false
consumer:
server.port=8888
spring.application.name=consumer
spring.dubbo.registry=zookeeper://192.168.225.143:2181
spring.dubbo.consumer.check=false
4、provider模块中编写接口的实现
@Component
@Service(interfaceClass = IUser.class, timeout = 1200000)
public class UserImpl implements IUser {
@Override
public String say() {
return "Hello Dubbo!";
}
}
5、consumer模块中消费该接口
@RestController
@RequestMapping("/test")
public class HelloController {
@Reference
private IUser user;
@RequestMapping("/hello")
public String test() {
return user.say();
}
}
6、provider、consumer编写启动类
@EnableDubboConfiguration
@SpringBootApplication
public class ApplicationStart {
public static void main(String[] args) {
SpringApplication.run(ApplicationStart.class, args);
}
}
7、效果展示