dubbo框架demo项目前后端分离
把之前自己搭建的dubbo框架demo项目记录一下
创建主项目:项目模块pom.xml配置:
<modules>
<module>fushan-api</module>
<module>fushan-service</module>
<module>fushan-web</module>
<module>fushan-consumer</module>
</modules>
创建api子模块项目:
创建实现api接口子模块:
在pom.xml文件引入api子模块依赖:
<!-- 添加继承依赖 -->
<dependency>
<groupId>com.example</groupId>
<artifactId>fushan-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
创建服务提供者子模块:
pom.xml分别引入api、service两个子模块:
<!-- 添加继承依赖 -->
<dependency>
<groupId>com.example</groupId>
<artifactId>fushan-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>fushan-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
dubbo-producer.xml文件配置:
前提是自己启动一个zookeeper注册服务中心,网上有教程
<!-- 服务提供方应用名,用于计算依赖关系 -->
<dubbo:application name="fushan-web"></dubbo:application>
<!-- 定义 zookeeper 注册中心地址及协议 -->
<dubbo:registry protocol="zookeeper" address="192.168.2.123:2181"
client="zkclient" />
<!-- 定义 Dubbo 协议名称及使用的端口,dubbo 协议缺省端口为 20880,如果配置为 -1 或者没有配置 port,则会分配一个没有被占用的端口 -->
<dubbo:protocol name="dubbo" port="-1" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.fushanapi.service.StudentInfoService" ref="studentInfoService" timeout="2000" loadbalance="random"/>
<dubbo:service interface="com.fushanapi.service.LogService" ref="logService" timeout="2000" loadbalance="random"/>
<dubbo:service interface="com.fushanapi.service.MD5Service" ref="MD5Service" timeout="2000" loadbalance="random"/>
<dubbo:service interface="com.fushanapi.service.MenuChildService" ref="menuChildService" timeout="2000" loadbalance="random"/>
<dubbo:service interface="com.fushanapi.service.MenuService" ref="menuService" timeout="2000" loadbalance="random"/>
<dubbo:service interface="com.fushanapi.service.RoleMenuService" ref="roleMenuService" timeout="2000" loadbalance="random"/>
<dubbo:service interface="com.fushanapi.service.RoleService" ref="roleService" timeout="2000" loadbalance="random"/>
<dubbo:service interface="com.fushanapi.service.TeacherService" ref="teacherService" timeout="2000" loadbalance="random"/>
<dubbo:service interface="com.fushanapi.service.UserService" ref="userService" timeout="2000" loadbalance="random"/>
<!-- 和本地 bean 一样实现服务 -->
<bean id="studentInfoService" class="com.fushanservice.service.StudentServiceImpl" />
<bean id="logService" class="com.fushanservice.service.LogServiceImpl" />
<bean id="MD5Service" class="com.fushanservice.service.MD5ServiceImpl" />
<bean id="menuChildService" class="com.fushanservice.service.MenuChildServiceImpl" />
<bean id="menuService" class="com.fushanservice.service.MenuServiceImpl" />
<bean id="roleMenuService" class="com.fushanservice.service.RoleMenuServiceImpl" />
<bean id="roleService" class="com.fushanservice.service.RoleServiceImpl" />
<bean id="teacherService" class="com.fushanservice.service.TeacherServiceImpl" />
<bean id="userService" class="com.fushanservice.service.UserServiceImpl" />
创建服务消费者子模块:
pom.xml文件配置引入api子模块依赖:
<!-- 添加继承依赖 -->
<dependency>
<groupId>com.example</groupId>
<artifactId>fushan-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
dubbo-consumer.xml文件配置:
当然前提是已经启动过zookeeper注册中心服务
<!-- 消费方应用名称 -->
<dubbo:application name="fushan-consumer" />
<!-- 定义 zookeeper 注册中心地址及协议 -->
<dubbo:registry protocol="zookeeper" address="192.168.2.123:2181"
client="zkclient" />
<!-- 使用注解方式创建远程服务代理方式,在controller中通过@Autowired注解-->
<dubbo:reference id="studentInfoService" interface="com.fushanapi.service.StudentInfoService"/>
<dubbo:reference id="logService" interface="com.fushanapi.service.LogService"/>
<dubbo:reference id="MD5Service" interface="com.fushanapi.service.MD5Service"/>
<dubbo:reference id="menuChildService" interface="com.fushanapi.service.MenuChildService"/>
<dubbo:reference id="menuService" interface="com.fushanapi.service.MenuService"/>
<dubbo:reference id="roleMenuService" interface="com.fushanapi.service.RoleMenuService"/>
<dubbo:reference id="roleService" interface="com.fushanapi.service.RoleService"/>
<dubbo:reference id="teacherService" interface="com.fushanapi.service.TeacherService"/>
<dubbo:reference id="userService" interface="com.fushanapi.service.UserService"/>
到此 dubbo框架前后端分离大体上完成