SSM+DUBBO实战(初级demo)

2019-03-20  本文已影响0人  6bc9f71c8f0c

项目简介,该项目采用SpringMVC+Spring+MyBatis搭建,使用dubbo作为RPC框架。项目分为三个模块,模块dubbo-api存放的是一些公共的实体类和service接口。模块dubbo-service是服务提供者,负责和数据库交互,并将服务暴露出来。模块dubbo-consumer是服务消费者,主要负责前端页面的跳转。

DUBBO简介,官网 ,dubbo是一款高性能、开源的Java RPC框架。

dubbo运行原理图

项目结构

项目思维导图

构建父级项目

首先我们使用maven创建一个Java项目,父项目的属性是pom,我们在父项目中先写好项目依赖,如使用的spring的版本等,当然,我们采用软引用,不强制依赖。

 <properties>
        <spring.version>4.3.7.RELEASE</spring.version>
    </properties> 
<dependencyManagement>
  <dependencies>
    ....
   </dependencies>
    </dependencyManagement>

具体使用到的依赖,我们后续一一列出,这里就不写出来了。

构建服务总线-api项目

使用maven创建dubbo-api项目,项目的packaging属性为jar。我们要在里面存放service接口和entity实现类。
实体类Book

public class Book implements Serializable {
    private String bookId;
    private String bookName;
    private Integer number;
    ...
}

接口BookService

public interface BookService {
    public Book findById(String id);
}
构建服务提供者provider项目
   <!-- 上下文配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-context.xml</param-value>
    </context-param>

    <!-- 监听器 加载配置上下文配置文件-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

要使项目可扩展,那么spring-context.xml文件我们只干一件事情,就是聚合其他的配置文件。

 <import resource="/config/*.xml"/>
 <context:component-scan base-package="com.zwq.core.service"/>

构建服务消费者consumer项目

使用maven创建dubbo-consumer项目,老规矩,先看看依赖吧。

  1. controller包扫描加入
  2. 静态资源映射
  3. 定义下视图解析器
<context:component-scan base-package="com.zwq.core.controller"/>
 <mvc:annotation-driven/>
 <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
 @GetMapping("/listBookById.do")
    public String listBookById(Model model, @RequestParam String id){
        Book book = bookService.findById(id);
        log.info("book:{}",book.toString());
        model.addAttribute("book",book);
        return "showBook";
    }

结束语
这个项目只是对dubbo的一个初级应用,在实际的生产环境中应该会更加额复杂,我也是出于学习阶段并没有实际开发过线上的dubbo项目,其中可能有很多不成熟的观点,需要不断的学习和进步。

上一篇下一篇

猜你喜欢

热点阅读