本文共 5315 字,大约阅读时间需要 17 分钟。
4spring-boot-note9---dubbo的基本使用
工程简介:一个父项目demo82_dubbo_all,下面四个子项目:spring_dubbo_api、spring_dubbo_common、spring_dubbo_controller、spring_dubbo_service。
依赖关系:spring_dubbo_controller和spring_dubbo_service一起依赖spring_dubbo_api。而spring_dubbo_api依赖spring_dubbo_common。
spring_dubbo_common: 主要是pojo,工具类
spring_dubbo_api: 公共接口类
spring_dubbo_service:提供服务实现
spring_dubbo_controller:消费服务
一、开始建立项目--父pom.xml
4.0.0 demo82_dubbo demo82_dubbo 0.0.1-SNAPSHOT pom demo82_dubbo demo82_dubbo org.springframework.boot spring-boot-starter-parent 2.0.4.RELEASE UTF-8 UTF-8 1.8 1.0 org.springframework.boot spring-boot-starter-web com.alibaba.boot dubbo-spring-boot-starter 0.2.0 org.apache.zookeeper zookeeper 3.4.8 com.101tec zkclient 0.10 org.apache.maven.plugins maven-compiler-plugin spring_dubbo_api spring_dubbo_common spring_dubbo_controller spring_dubbo_service
二、spring_dubbo_common项目
public class Product implements Serializable{ private static final long serialVersionUID = 136863327838375848L; private Integer id; private String name; private Double price; private String desc;
三、spring_dubbo_api项目
1、pom
<dependencies> <dependency> <groupId>demo82_dubbo</groupId> <artifactId>spring_dubbo_common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> 2、com.wj.api包下就一个api类/** * 公共接口 */public interface ProductService { ListfindAll(); void addOne(Product p); void deleteOne(Integer id); void findOne(Integer id);}
四、spring_dubbo_service项目 端口8080
demo82_dubbo spring_dubbo_api 0.0.1-SNAPSHOT
4.1配置application.properties
#启动端口server.port: 8080#服务方需要配置前三项+portdubbo.application.name:server-providerdubbo.registry.address:zookeeper://127.0.0.1:2181dubbo.protocol.name:dubbodubbo.protocol.port:20880
4.2 DaoKit
public class DaoKit { /** * 内存数据库 */ private static Mapproducts = new HashMap<>(); static{ for (int i = 0; i < 10; i++) { Product p = new Product(); p.setId(i); p.setName("name"+i); p.setPrice((double) i); p.setDesc("desc"+i); products.put(i, p); } } public static List findAll() { List list = new ArrayList<>(); list.addAll(products.values()); return list; } public static void deleteOne(Integer id) { products.remove(id); } public static void findOne(Integer id) { products.get(id); } public static void addOne(Product p) { if(p.getId()!=null) { Product old = products.get(p.getId()); if(old==null) { products.put(p.getId(), p); } } } }
4.3 ProductServiceImpl 需要标注@Service(interfaceClass = ProductService.class)
@Service(interfaceClass = ProductService.class)@Componentpublic class ProductServiceImpl implements ProductService{ @Override public ListfindAll() { System.out.println("服务被调用"); return DaoKit.findAll(); } @Override public void addOne(Product p) { DaoKit.addOne(p); } @Override public void deleteOne(Integer id) { DaoKit.deleteOne(id); } @Override public void findOne(Integer id) { DaoKit.findOne(id); }}
4.4 启动类
@EnableDubbo@SpringBootApplicationpublic class Application { /** * main方式启动 : */ public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
主要有几个地方配置:1、app.prop配置地址等。2、实现接口的service标注@Service 3、使用@EnableDubbo开启
五、spring_dubbo_controller工程 端口8082
1、pom.xml同spring_dubbo_service
2、application.properties
#启动端口server.port: 8082#消费方需要配置前三项dubbo.application.name:server-consumerdubbo.registry.address:zookeeper://127.0.0.1:2181dubbo.protocol.name:dubbo
3、ProductController
@RestControllerpublic class ProductController { @Reference private ProductService service; @GetMapping("/findAll") public ListfindAll() { System.out.println("服务被消费"); return service.findAll(); } }
主要有几个地方配置:1、app.prop配置地址等。2、注入的service标注@Reference 3、使用@EnableDubbo开启
六、测试
轮流启动service和controller2个项目,访问地址http://localhost:8082/findAll。
这个是service项目打印的
七、dubbo_admin的使用
本人已经打包一个新的dubbo_admin,地址到我的资源找,将此war部署到tomcat中即可.
访问地址:http://localhost:8090 (8090你配置tomcat的端口)。账号root root
转载地址:http://ehuni.baihongyu.com/