本人也是才开始接触 阿里巴巴的开源分布式框架 dubbo,因为现在微服务框架 spring boot也非常的火,然后结合dubbo的官网搭建这个开发环境。

一、首先 zookeeper作为集群管理服务器,安装和配置在这里就不说了

划分为 4个项目

项目目录如下:

4个项目的依赖关系是:common里面暂时存放的只有user一个实体类,后面陆续会加上其他的公共类,分页,验证等,这个项目不依赖其他的项目,其他3个项目都需要依赖它,所有这个项目需要先打包(相信做个maven项目的人应该都会-----如果对项目有所改动的话,需要先 maven clean,然后再maven install);

第二个需要打包的是 app项目,service和web项目都依赖它,然后再打包service项目,最后web项目。

hlq-commer-common 项目目录:

hlq-commer-app 就是单独的一个service接口,因为只是搭建个环境,就只写了一个service和 一个方法,

service 代码如下:(就是根据用户id获取一个用户的信息)

package com.commer.app.UserService;

import com.commer.app.entity.User;

public interface UserService {

  //根据用户id获取用户信息

  User selectByPrimaryKey(Integer id);

}

hlq-commer-service 这个项目作为dubbo的一个服务提供者,最重要的就是暴露服务,数据库的连接,mybatis的映射都在这

项目目录:

App类作为dubbo的一个服务启动类(发布服务,连接数据库,指定映射文件),同时加载spring boot的配置文件,

主要代码:

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.ComponentScan.Filter;

import org.springframework.context.annotation.ImportResource;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import com.alibaba.druid.pool.DruidDataSource;

import com.alibaba.dubbo.config.annotation.Service;

@SpringBootApplication

@ComponentScan(basePackages = { "com.commer.app.service.impl" }, includeFilters = {   @Filter(classes = { Service.class}) })

@ImportResource(locations = { "classpath:dubboprovider.xml" })

@MapperScan("com.commer.app.mapper")

public class App {

  @Bean(initMethod = "init", destroyMethod = "close")

  @ConfigurationProperties(prefix = "spring.datasource")

  public DataSource dataSource() {

    return new DruidDataSource();

  }

  @Bean

  public SqlSessionFactory sqlSessionFactoryBean() throws Exception {

     PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();

    SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

    sqlSessionFactoryBean.setDataSource(dataSource());

    sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:/mybatis-mapping/*Mapper.xml"));

    return sqlSessionFactoryBean.getObject();

   }

public static void main(String[] args) throws IOException {

  SpringApplication.run(App.class, args);

  System.out.println("服务运行中...");

  System.in.read();

}

userMapper类(dao 类)

@Component

public interface UserMapper {

 int deleteByPrimaryKey(Long id);

int insert(User record);

int insertSelective(User record);

//根据用户id获取用户信息

User selectByPrimaryKey(Integer id);

}

这里需要注意的地方就是 @Component这个注解(表示该类给扫描组件),如果不加这个注解的话,UserServiceImpl @Resource获取UserMapper Bean会是个空(这个是spring自己的一个扫描组件配置,可以自己去看下这方面的知识);

UserMapper.xml这里就不说了,不懂的同学可以去看看 mybatis的教程了解

然后先看 UserServiceImpl代码:

主要注意红色标注的地方,之前dubbo提供者发布的时候一直失败,就是因为导入的是一个 spring自带的一个 @service注解,一直没注意这个地方,导致项目一直发布不了,因为作为一个dubbo服务提供者,启动时需要知道发布的服务是在哪,不使用dubbo提供的@service注解。就会出现上面的问题。

application.properties(主要配置数据库连接)

然后重点是 dubbo服务提供者的配置文件

注册中心使用zookeeper,扫描所有的包并且发布。

最后就看 dubbo的一个服务消费者了,这里个人整合了 html 和jsp

首先看 启动类 webStart:

红色地方标注的是,启动的时候测试userservice有没有发布过来,成功的话会打印一个用户姓名,下面注释的部分用来配置拦截器和出现错误页面的一个处理方法。

然后贴上控制器类和几个测试的方法:

这里需要注意红色标注的地方,之前一直使用的是下面的一个注解,然后注入 UserService bean的时候一直null,很分解,看过别人的dubbo案例,好多都是使用了下面那种注解,问题不晓得在哪(个人还是个菜鸡)

下面MvcConfiguration类主要让spring boot整合jsp,官方貌似提示  spring boot是不支持jsp的需要自己去整合。

然后后面重要的就是 dubbo服务消费者的配置文件了

配置文件还有什么不懂的同学,可以自己去dubbo官网看下官方文档。

适合初学者的一个分布式环境搭建过程(spring boot + zookeeper + dubbo + mybatis + mysql)的更多相关文章

  1. rpc框架dubbo学习入门及环境搭建(spring boot+Kotlin)

    学习之前,确保有以下知识基础: Java网络编程 Socket传输数据 IO流 rpc简介及实现 rpc是remote procedure call的简写,意思为远程过程调用. rpc应用较多的情景是 ...

  2. Hadoop2.7.3+Spark2.1.0 完全分布式环境 搭建全过程

    一.修改hosts文件 在主节点,就是第一台主机的命令行下; vim /etc/hosts 我的是三台云主机: 在原文件的基础上加上; ip1 master worker0 namenode ip2 ...

  3. 【转】Hadoop HDFS分布式环境搭建

    原文地址  http://blog.sina.com.cn/s/blog_7060fb5a0101cson.html Hadoop HDFS分布式环境搭建 最近选择给大家介绍Hadoop HDFS系统 ...

  4. hadoop学习(三)----hadoop2.x完全分布式环境搭建

    今天我们来完成hadoop2.x的完全分布式环境搭建,话说学习本来是一件很快乐的事情,可是一到了搭环境就怎么都让人快乐不起来啊,搭环境的时间比学习的时间还多.都是泪.话不多说,走起. 1 准备工作 开 ...

  5. 大数据:Hadoop(JDK安装、HDFS伪分布式环境搭建、HDFS 的shell操作)

    所有的内容都来源与 Hadoop 官方文档 一.Hadoop 伪分布式安装步骤 1)JDK安装 解压:tar -zxvf jdk-7u79-linux-x64.tar.gz -C ~/app 添加到系 ...

  6. 攻城狮在路上(陆)-- hadoop分布式环境搭建(HA模式)

    一.环境说明: 操作系统:Centos6.5 Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 ...

  7. 最简单的SVN环境搭建过程

    本文简单描述最简单的SVN环境搭建过程 搭建环境:windows (个人验证了windows2003,windows xp) 使用软件:Setup-Subversion-1.6.17  //Serve ...

  8. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

  9. Hadoop学习笔记1:伪分布式环境搭建

    在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下: 1.CentOS 6.7下安装JDK , 地址: http://blog.csdn.net/yule ...

随机推荐

  1. MySQL锁(MyISAM和InnoDB)

    MySQL有三种级别的锁: 1. 页级别 BDB 2. 表级别 MyISAM 3. 行级别 InnoDB 就 总体而言MyISAM表的读和写是串行的.在一定条件下,MyISAM表也支持查询和插入操作的 ...

  2. Java集合类从属关系

    Java的集合分为了四类:List Set Queue Map,每类都有不同的实现,有基于数组实现的,有基于链表实现的,有基于xx树实现的,不同的实现虽在功能上可以相互替代但都有各自的应用场景,如基于 ...

  3. IPad分屏,当电脑第二显示屏

    最在在网上看到使用IPad可以做为电脑的第二个显示屏,对于我这样一个程序猿来说,这真是我的福音呀!因此在网上搜了许多关于Ipad投屏的信息,下面简单说明一下,包括怎么使用! 1.根据在网上搜索的结果, ...

  4. Html5模拟通讯录人员排序(sen.js)

    // JavaScript Document var PY_Json_Str = ""; var PY_Str_1 = ""; var PY_Str_2 = & ...

  5. Coursera 机器学习笔记(二)

    主要为第三周课程内容:逻辑回归与正则化 逻辑回归(Logistic Regression) 一.逻辑回归模型引入 分类问题是指尝试预测的是结果是否属于某一个类. 维基百科的定义为:根据已知训练区提供的 ...

  6. Docker容器管理平台Humpback进阶-私有仓库

    Docker私有仓库 在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,docker 会去哪儿查找并下载镜像呢? 它实际上是从 registry.hub.doc ...

  7. 【数据库】Mean web开发 03-MongoDB客户端管理工具NoSQL Manager for MongoDB的使用

    简介 Mean是JavaScript的全栈开发框架.更多介绍 用MongoDB实现持久数据的存储是Mean Web全栈开发中的一部分. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非 ...

  8. iOS gcd 串行,并行,同步,异步代码研究

    参考文章: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #527eff } span.s1 { } http: ...

  9. JDBC加载数据库驱动的方式

    JDBC作为数据库访问的规范接口,其中只是定义一些接口.具体的实现是由各个数据库厂商来完成. 一.重要的接口: 1.public interface Driver 每个驱动程序类必须实现的接口.Jav ...

  10. Java中的static、final关键字

    static static 的含义是静态的,是一个静态修饰符,一般来说,被static修饰的有以下几种,类.变量.方法.代码块. static修饰类 Java中普通的类是不允许被声明为静态的,但是有一 ...