dubbo从入门到精通 springboot整合dubbo(七)
1、公共模块(声明公共接口、实体类)
一、工程目录
二、UserAddress.java
package com.mongoubiubiu.bean; import java.io.Serializable; /** * 用户地址 * */ public class UserAddress implements Serializable { private Integer id; private String userAddress; //用户地址 private String userId; //用户id private String consignee; //收货人 private String phoneNum; //电话号码 private String isDefault; //是否为默认地址 Y-是 N-否 public UserAddress() { super(); // TODO Auto-generated constructor stub } public UserAddress(Integer id, String userAddress, String userId, String consignee, String phoneNum, String isDefault) { super(); this.id = id; this.userAddress = userAddress; this.userId = userId; this.consignee = consignee; this.phoneNum = phoneNum; this.isDefault = isDefault; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserAddress() { return userAddress; } public void setUserAddress(String userAddress) { this.userAddress = userAddress; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getConsignee() { return consignee; } public void setConsignee(String consignee) { this.consignee = consignee; } public String getPhoneNum() { return phoneNum; } public void setPhoneNum(String phoneNum) { this.phoneNum = phoneNum; } public String getIsDefault() { return isDefault; } public void setIsDefault(String isDefault) { this.isDefault = isDefault; } }
二、OrderService.java
package com.mongoubiubiu.service; import java.util.List; import com.mongoubiubiu.bean.UserAddress; public interface OrderService { public List<UserAddress> initOrder(String userId); }
三、UserService.java
package com.mongoubiubiu.service; import com.mongoubiubiu.bean.UserAddress; import java.util.List; public interface UserService { /** * 按照用户id返回所有的收货地址 * @param userId * @return */ public List<UserAddress> getUserAddressList(String userId); }
五、pom.xml
<?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>org.mongoubiubiu</groupId> <artifactId>dubbo-commons</artifactId> <version>1.0-SNAPSHOT</version> </project>
2、服务提供者
一、工程目录
二、pom.xml
<?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 https://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.5.1</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.mangoubiubiu</groupId> <artifactId>user-provider-boot</artifactId> <version>0.0.1-SNAPSHOT</version> <name>user-provider-boot</name> <description>服务提供者</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!--引入公共依赖--> <dependency> <groupId>org.mongoubiubiu</groupId> <artifactId>dubbo-commons</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--导入dubbostarer--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.12</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
三、application.properties
dubbo.application.name=user-service-provider dubbo.registry.address=127.0.0.1:2181 dubbo.registry.protocol=zookeeper dubbo.protocol.name=dubbo dubbo.protocol.port=20883 dubbo.monitor.protocol=registry dubbo.config-center.timeout=10000
四、UserServiceImpl.java
package com.mangoubiubiu.service.impl; import com.mongoubiubiu.bean.UserAddress; import com.mongoubiubiu.service.UserService; import org.apache.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Service//暴露服务 @Component public class UserServiceImpl implements UserService { public List<UserAddress> getUserAddressList(String userId) { UserAddress address1 = new UserAddress(1, "湖南省常德", "1", "1111", "010-56253825", "Y"); UserAddress address2 = new UserAddress(2, "湖南省长沙", "1", "3333", "010-56253825", "N"); List<UserAddress> list=new ArrayList<>(); list.add(address1); list.add(address2); return list; } }
五、启动类(UserProviderBootApplication.java)
package com.mangoubiubiu; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableDubbo @SpringBootApplication public class UserProviderBootApplication { public static void main(String[] args) { SpringApplication.run(UserProviderBootApplication.class, args); } }
3、服务消费者
一、工程目录
二、pom.xml
<?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 https://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.5.1</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.mangoubiubiu</groupId> <artifactId>user-consumer-boot</artifactId> <version>0.0.1-SNAPSHOT</version> <name>user-consumer-boot</name> <description>服务消费者</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--引入公共依赖--> <dependency> <groupId>org.mongoubiubiu</groupId> <artifactId>dubbo-commons</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--导入dubbostarer--> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.12</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <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>
三、application.properties
server.port=8000 dubbo.application.name=user-service-consumer dubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.monitor.protocol=registry
四、OrderServiceImpl.java
package com.mangoubiubiu.service.Impl; import com.alibaba.dubbo.config.annotation.Reference; import com.mongoubiubiu.bean.UserAddress; import com.mongoubiubiu.service.OrderService; import com.mongoubiubiu.service.UserService; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service; import java.util.List; @Service public class OrderServiceImpl implements OrderService { @DubboReference( url = "dubbo://127.0.0.1:20883") UserService userService; public List<UserAddress> initOrder(String userId) { System.out.println("用户id"+userId); userService.getUserAddressList(userId) .stream() .forEach((o)->{ System.out.println(o.getUserAddress()); }); return userService.getUserAddressList(userId); } }
五、UserController.java
package com.mangoubiubiu.controller; import com.mongoubiubiu.bean.UserAddress; import com.mongoubiubiu.service.OrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping("/user") public class UserController { @Autowired private OrderService service; @GetMapping("/info/{id}") public List<UserAddress> getUserInfo(@PathVariable Integer id){ return service.initOrder(String.valueOf(id)); } @GetMapping("/success") public String getUserInfos(){ return "success"; } }
五、启动类(UserConsumerBootApplication.java)
package com.mangoubiubiu; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @EnableDubbo//开启基于注解的dubbo功能 @SpringBootApplication public class UserConsumerBootApplication { public static void main(String[] args) { SpringApplication.run(UserConsumerBootApplication.class, args); } }
4、测试
一、启动服务提供者
二、进入dubbo管理控制台查看
三、开启消费者消费
四、访问controller 中的请求地址
服务调用成功 success
本文作者:KwFruit
本文链接:https://www.cnblogs.com/mangoubiubiu/p/14903430.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
dubbo从入门到精通
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步