适合初学者的一个分布式环境搭建过程(spring boot + zookeeper + dubbo + mybatis + mysql)
本人也是才开始接触 阿里巴巴的开源分布式框架 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)的更多相关文章
- rpc框架dubbo学习入门及环境搭建(spring boot+Kotlin)
学习之前,确保有以下知识基础: Java网络编程 Socket传输数据 IO流 rpc简介及实现 rpc是remote procedure call的简写,意思为远程过程调用. rpc应用较多的情景是 ...
- Hadoop2.7.3+Spark2.1.0 完全分布式环境 搭建全过程
一.修改hosts文件 在主节点,就是第一台主机的命令行下; vim /etc/hosts 我的是三台云主机: 在原文件的基础上加上; ip1 master worker0 namenode ip2 ...
- 【转】Hadoop HDFS分布式环境搭建
原文地址 http://blog.sina.com.cn/s/blog_7060fb5a0101cson.html Hadoop HDFS分布式环境搭建 最近选择给大家介绍Hadoop HDFS系统 ...
- hadoop学习(三)----hadoop2.x完全分布式环境搭建
今天我们来完成hadoop2.x的完全分布式环境搭建,话说学习本来是一件很快乐的事情,可是一到了搭环境就怎么都让人快乐不起来啊,搭环境的时间比学习的时间还多.都是泪.话不多说,走起. 1 准备工作 开 ...
- 大数据:Hadoop(JDK安装、HDFS伪分布式环境搭建、HDFS 的shell操作)
所有的内容都来源与 Hadoop 官方文档 一.Hadoop 伪分布式安装步骤 1)JDK安装 解压:tar -zxvf jdk-7u79-linux-x64.tar.gz -C ~/app 添加到系 ...
- 攻城狮在路上(陆)-- 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 ...
- 最简单的SVN环境搭建过程
本文简单描述最简单的SVN环境搭建过程 搭建环境:windows (个人验证了windows2003,windows xp) 使用软件:Setup-Subversion-1.6.17 //Serve ...
- Hadoop学习笔记(3)——分布式环境搭建
Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...
- Hadoop学习笔记1:伪分布式环境搭建
在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下: 1.CentOS 6.7下安装JDK , 地址: http://blog.csdn.net/yule ...
随机推荐
- DOM4J介绍与代码示例(2)-XPath 详解
XPath 详解,总结 XPath简介 XPath是W3C的一个标准.它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计.目前有XPath1.0和 XPath2.0两个版本.其 ...
- Lambda类库篇 —— Streams API, Collector和并行
本文是深入理解Java 8 Lambda系列的第二篇,主要介绍Java 8针对新增语言特性而新增的类库(例如Streams API.Collectors和并行). 本文是对 Brian Goetz 的 ...
- Submin1安装记录(CentOS5)
安装SVN和Apache wget http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco -O /tmp/RPM-GPG-KEY-WANdisco & ...
- java 与操作系统进程同步问题(一)————互斥问题
最近学校开设了操作系统原理课程,老师要求用任意语言去模拟进程的同步和互斥问题. 在尝试的写了之后,发现这个问题非常有意思,故想记录在博客中,作为自己的学习轨迹. 个人还是比较喜欢用Java语言,所以采 ...
- js的event事件
一 . 焦点:使浏览器能够区分区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入. 我们可以通过一些方式给元素设置焦点 1.点击 2.tab 3.js 不是所有元素都能够接受 ...
- VR全景智慧城市--2017年VR项目加盟将是一个机遇
全景智慧城市项目是河南艺境空间文化传播有限公司自主开发的国内第一家商业全景平台, 旨在构建全景城市,实现智慧生活,让人们随时随地身临其境拥有全世界,享受快捷.真实.趣味.优质生活. 以VR虚拟现实技术 ...
- VR全景:实体店与互联网的完美结合
VR元年已过,VR项目.VR创业潮转为理性,VR行业分为两个方向:硬件和内容.硬件又分为VR头显和辅助设备,内容又分为VR全景和VR虚拟内容,如游戏.娱乐.根据行业划分为VR+购物,VR+教育,VR+ ...
- javaSE_08Java中static、继承、重写
一.Static 学习静态这个关键字,关键是抓住两个点: 1,关注其语法特点 2,关注其使用场景 案例讲解: 我们先从静态变量开始,当一个成员变量加上static修饰之后,会是一个什么效果? 比如创建 ...
- js背景自适应,学到了
最近在做一个项目,要求实现背景自适应,何为背景自适应呢? 1.如果背景图高度不够,背景height是100%,background-size就应该是 100% auto 2.如果背景图宽度不够,背景w ...
- java基础(二章)
java基础(二章) 一,变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则 l 必须以字母.下划线 _ .美元符号 $ 开头 l 变量中,可以包括数字 l 变量中,不能出现特 ...