目录
1、创建springboot-dubbo-paren父工程(pom)
2、创建springboot-dubbo-public-api-service公共Api接口工程(pom)
3、创建springboot-dubbo-public-api-member-service会员服务接口工程(jar)
4、创建springboot-dubbo-api-member-service-impl会员服务实现工程(jar)
5、创建springboot-dubbo-order-web订单工程(jar)
一、版本及说明
JDK:1.8
SpringBoot:2.1.4.RELEASE
ZooKeeper:3.4.14
Dubbo:0.2.0(dubbo-spring-boot-starter)
ZooKeeper下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/zookeeper-3.4.14.tar.gz
二、项目结构介绍
三、整合开始
1、创建springboot-dubbo-paren父工程(pom)
1、创建完成后删除 src 目录
2、父工程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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> </parent> <groupId>com.slming</groupId> <artifactId>springboot-dubbo-parent</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <modules> <module>springboot-dubbo-public-api-service</module> <module>springboot-dubbo-api-member-service-impl</module> <module>springboot-dubbo-order-web</module> </modules> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.Encoding>UTF-8</project.reporting.Encoding> </properties> <dependencies> <!-- Dubbo --> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency> <!-- Zookeeper --> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> <type>pom</type> </dependency> <!-- Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2、创建springboot-dubbo-public-api-service公共Api接口工程(pom)
注意:该工程为父工程(springboot-dubbo-paren)下的子工程(Module)
1、创建完成后删除 src 目录
2、公共Api接口工程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>springboot-dubbo-parent</artifactId> <groupId>com.slming</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <packaging>pom</packaging> <modules> <module>springboot-dubbo-public-api-member-service</module> </modules> <artifactId>springboot-dubbo-public-api-service</artifactId> </project>
3、创建springboot-dubbo-public-api-member-service会员服务接口工程(jar)
注意:该工程为公共Api接口工程(springboot-dubbo-public-api-service)的子工程,右击 公共Api接口工程 依次选择 “New”--->"Module"
1、会员服务接口工程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"> <!-- 父工程为公共API接口工程 --> <parent> <artifactId>springboot-dubbo-public-api-service</artifactId> <groupId>com.slming</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> <artifactId>springboot-dubbo-public-api-member-service</artifactId> </project>
2、创建会员服务接口:com.slming.api.memeber.IMemberService
package com.slming.api.memeber; /** * @author itslm */ public interface IMemberService { /** * 获取会员 * <br/> * <p>Author: Leiming She</p> * <p>Date: 2019-04-29 10:05:36</p> * * @param username 用户名 * @return java.lang.String */ String getMember(String username); }
4、创建springboot-dubbo-api-member-service-impl会员服务实现工程(jar)
注意:该工程为父工程(springboot-dubbo-paren)下的子工程(Module)
1、会员服务实现工程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>springboot-dubbo-parent</artifactId> <groupId>com.slming</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> <artifactId>springboot-dubbo-api-member-service-impl</artifactId> <dependencies> <dependency> <artifactId>springboot-dubbo-public-api-member-service</artifactId> <groupId>com.slming</groupId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>
2、创建会员服务实现类:com.slming.api.memeber.impl.MemberServiceImpl
注意:该类的 @Service 注解为 com.alibaba.dubbo.config.annotation.Service 包下的,不要导错包哦~
package com.slming.api.memeber.impl; import com.alibaba.dubbo.config.annotation.Service; import com.slming.api.memeber.IMemberService; /** * @author itslm */ @Service public class MemberServiceImpl implements IMemberService { /** * 获取会员 * <br/> * <p>Author: Leiming She</p> * <p>Date: 2019-04-29 10:05:36</p> * * @param username 用户名 * @return java.lang.String */ @Override public String getMember(String username) { return "Dubbo:" + username; } }
3、创建application.yml文件:
server: port: 8080 dubbo: application: name: member protocol: port: 20880 name: dubbo registry: address: zookeeper://127.0.0.1:2181
4、创建应用启动类:com.slming.AppMemberApplication
注意:需要加上 @EnableDubbo 注解,开启Dubbo支持
package com.slming; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author itslm */ @SpringBootApplication @EnableDubbo public class AppMemberApplication { public static void main(String[] args) { SpringApplication.run(AppMemberApplication.class, args); } }
5、创建springboot-dubbo-order-web订单工程(jar)
注意:该工程为父工程(springboot-dubbo-paren)下的子工程(Module)
1、订单工程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>springboot-dubbo-parent</artifactId> <groupId>com.slming</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> <artifactId>springboot-dubbo-order-web</artifactId> <dependencies> <dependency> <artifactId>springboot-dubbo-public-api-member-service</artifactId> <groupId>com.slming</groupId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>
2、创建订单访问类:com.slming.order.controller.OrderController
注意:此处不再使用 @Autoware 进行注入,
而使用 com.alibaba.dubbo.config.annotation.Reference 包下的 @Reference 注入
package com.slming.order.controller; import com.alibaba.dubbo.config.annotation.Reference; import com.slming.api.memeber.IMemberService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; /** * @author itslm */ @RestController public class OrderController { @Reference private IMemberService memberService; @GetMapping("getMember/{username}") public String getMember(@PathVariable("username") String username){ return memberService.getMember(username); } }
3、创建application.yml文件:
server: port: 8082 dubbo: application: name: order registry: address: zookeeper://127.0.0.1:2181 consumer: timeout: 5000
4、创建应用启动类:com.slming.AppOrderApplication
注意:需要加上 @EnableDubbo 注解,开启Dubbo支持
package com.slming; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author itslm */ @EnableDubbo @SpringBootApplication public class AppOrderApplication { public static void main(String[] args) { SpringApplication.run(AppOrderApplication.class, args); } }
四、启动项目
1、启动zookeeper注册中心
2、启动会员服务实现项目(springboot-dubbo-api-member-service-impl)
3、启动订单项目(springboot-dubbo-order-web)
4,打开浏览器输入:localhost:8082/getMember/itslm 回车,若显示如下页面即 整合成功 !
五、项目打包
1、直接在父工程中执行 install 即可
2、若打包成功,控制台底部会输出如下信息:
由于输出信息较多,上边的信息省略......此处只贴出了最下边的输出信息。 [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: [INFO] [INFO] springboot-dubbo-parent 1.0-SNAPSHOT ............... SUCCESS [ 0.320 s] [INFO] springboot-dubbo-public-api-service ................ SUCCESS [ 0.020 s] [INFO] springboot-dubbo-public-api-member-service ......... SUCCESS [ 2.450 s] [INFO] springboot-dubbo-api-member-service-impl ........... SUCCESS [ 1.440 s] [INFO] springboot-dubbo-order-web 1.0-SNAPSHOT ............ SUCCESS [ 0.550 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 5.660 s [INFO] Finished at: 2019-04-30T15:23:35+08:00 [INFO] ------------------------------------------------------------------------ Process finished with exit code 0
3、查看jar包
此时,在会员实现项目(springboot-dubbo-api-member-service-impl)和订单项目(springboot-dubbo-order-web)目录下的会多出 target 目录,里边就有打包好的 jar 包,分别为:
springboot-dubbo-api-member-service-impl-1.0-SNAPSHOT.jar
springboot-dubbo-order-web-1.0-SNAPSHOT.jar
4、运行jar包:
在jar包所在的目录内打开命令行窗口,按下方顺序依次执行(注意:顺序不能颠倒,否则访问会抛出 500 错误)
java -jar springboot-dubbo-api-member-service-impl-1.0-SNAPSHOT.jar java -jar springboot-dubbo-order-web-1.0-SNAPSHOT.jar
六、源码下载
GitHub源码地址:https://github.com/sheleiming/springboot-dubbo-parent
若有疏忽和错误之处,欢迎大家批评指正,以便不断完善。如有疑问请留言或联系博主:itslm@foxmail.com