(十六)springmvc+mybatis+dubbo+zookeeper分布式架构 整合

在前面的章节中,我们着手介绍了dubbo的相关知识,在这个基础之上,我们可以考虑将dubbo服务应用于我们的分布式系统了,从今天开始,我们会详细介绍如何将dubbo和spring集成并应用于我们的分布式系统。

1. 创建ant-bookmark-facade项目(dubbo服务接口),其中pom.xml文件定义如下:

    <span style="font-size: 16px;"><?xml version="1.0"?>  
    <project  
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"  
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
    <modelVersion>4.0.0</modelVersion>  
    <parent>  
    <groupId>com.sml.sz</groupId>  
    <artifactId>ant-project</artifactId>  
    <version>1.0.0</version>  
    </parent>  
    <artifactId>ant-member-facade</artifactId>  
    <packaging>jar</packaging>  
    <name>ant-member-facade</name>  
    <url>http://maven.apache.org</url>  
    <description>ant的收藏模块Dubbo服务接口包,提供相关的Dubbo服务入口</description>  
       
    <properties>  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    </properties>  
    <dependencies>  
    <!-- ant framework begin -->  
    <!--  系统核心框架包 -->  
    <dependency>  
    <groupId>com.sml.sz</groupId>  
    <artifactId>ant-framework</artifactId>  
    </dependency>  
    <!-- ant framework end -->  
    </dependencies>  
    </project>  
    <?xml version="1.0"?>  
    <project  
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"  
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
    <modelVersion>4.0.0</modelVersion>  
    <parent>  
    <groupId>com.sml.sz</groupId>  
    <artifactId>ant-project</artifactId>  
    <version>1.0.0</version>  
    </parent>  
    <artifactId>ant-member-facade</artifactId>  
    <packaging>jar</packaging>  
    <name>ant-member-facade</name>  
    <url>http://maven.apache.org</url>  
    <description>ant的会员模块Dubbo服务接口包,提供相关的Dubbo服务入口</description>  
       
    <properties>  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    </properties>  
    <dependencies>  
    <!-- ant framework begin -->  
    <!--  系统核心框架包 -->  
    <dependency>  
    <groupId>com.sml.sz</groupId>  
    <artifactId>ant-framework</artifactId>  
    </dependency>  
    <!-- ant framework end -->  
    </dependencies>  
    </project></span>  

  2. 定义实体entity,因为接口中的对象要使用

    <span style="font-size: 16px;">package com.sml.sz.bookmark.entity;  
      
    import org.hibernate.validator.constraints.Length;  
      
    import com.sml.sz.common.persistence.DataEntity;  
      
    /** 
     * 我的收藏链接管理Entity 
     *  
     * @author ant 
     * @version 2016-01-30 
     */  
    public class Bookmark extends DataEntity<Bookmark> {  
      
        private static final long serialVersionUID = 1L;  
        private String tagId;  
        private BookmarkTag bookmarkTag; // 业务主表ID 父类  
        private String bookmarkname; // 名称  
        private String bookmarkurl; // 名称  
      
        public Bookmark() {  
            super();  
        }  
      
        public Bookmark(String id) {  
            super(id);  
        }  
      
        public Bookmark(BookmarkTag bookmarkTag) {  
            this.tagId = bookmarkTag.getId();  
            this.bookmarkTag = bookmarkTag;  
        }  
      
        @Length(min = 1, max = 64, message = "业务主表ID长度必须介于 1 和 64 之间")  
        public String getTagId() {  
            return tagId;  
        }  
      
        public void setTagId(String tagId) {  
            this.tagId = tagId;  
        }  
      
        @Length(min = 1, max = 100, message = "名称长度必须介于 1 和 100 之间")  
        public String getBookmarkname() {  
            return bookmarkname;  
        }  
      
        public void setBookmarkname(String bookmarkname) {  
            this.bookmarkname = bookmarkname;  
        }  
      
        @Length(min = 1, max = 100, message = "名称长度必须介于 1 和 100 之间")  
        public String getBookmarkurl() {  
            return bookmarkurl;  
        }  
      
        public void setBookmarkurl(String bookmarkurl) {  
            this.bookmarkurl = bookmarkurl;  
        }  
      
        public BookmarkTag getBookmarkTag() {  
            return bookmarkTag;  
        }  
      
        public void setBookmarkTag(BookmarkTag bookmarkTag) {  
            this.bookmarkTag = bookmarkTag;  
        }  
      
    }</span>  

  

    <span style="font-size: 16px;">package com.sml.sz.bookmark.entity;  
      
    import java.util.List;  
      
    import org.hibernate.validator.constraints.Length;  
      
    import com.google.common.collect.Lists;  
    import com.sml.sz.common.persistence.DataEntity;  
      
    /** 
     * 我的收藏链接管理Entity 
     * @author ant 
     * @version 2016-01-30 
     */  
    public class BookmarkTag extends DataEntity<BookmarkTag> {  
          
        private static final long serialVersionUID = 1L;  
        private String bookmarktagname;     // 标签名称  
        private List<Bookmark> bookmarkList = Lists.newArrayList();       // 子表列表  
          
        public BookmarkTag() {  
            super();  
        }  
      
        public BookmarkTag(String id){  
            super(id);  
        }  
      
        @Length(min=1, max=64, message="标签名称长度必须介于 1 和 64 之间")  
        public String getBookmarktagname() {  
            return bookmarktagname;  
        }  
      
        public void setBookmarktagname(String bookmarktagname) {  
            this.bookmarktagname = bookmarktagname;  
        }  
          
        public List<Bookmark> getBookmarkList() {  
            return bookmarkList;  
        }  
      
        public void setBookmarkList(List<Bookmark> bookmarkList) {  
            this.bookmarkList = bookmarkList;  
        }  
    }</span>  

  3. 定义接口类,此类会在dubbo生产者和dubbo消费者之间被引用

    <span style="font-size: 16px;">package com.sml.sz.bookmark.service;  
      
    import java.util.List;  
      
    import com.sml.sz.bookmark.entity.BookmarkTag;  
    import com.sml.sz.common.persistence.Page;  
      
    /** 
     * 我的收藏链接管理Service 
     *  
     * @author ant 
     * @version 2016-01-30 
     */  
    public interface BookmarkTagFacade {  
        public BookmarkTag get(String id);  
      
        public List<BookmarkTag> findList(BookmarkTag bookmarkTag);  
      
        public Page<BookmarkTag> findPage(Page<BookmarkTag> page, BookmarkTag bookmarkTag);  
      
        public void save(BookmarkTag bookmarkTag);  
      
        public void delete(BookmarkTag bookmarkTag);  
    }</span>  

  

 架构代码如下:

资料和源码来源

原文地址:https://www.cnblogs.com/xiamudaren/p/8443893.html