本篇主要介绍dubbo-demo-api接口层和dubbo-demo-service层,介绍代码前,咱们先来回顾一下整个demo工程的结构
1.dubbo-demo-api
这里面主要是定义所有的接口,demo工程里就定义了一个测试接口,看一下该层的代码结构
DemoApi.java代码
package com.example.dubbo.demo.api; import java.util.List; import dubbo.demo.model.entity.Student; /** * Demo 接口定义 * @author * */ public interface DemoApi { String sayHello(String name); void add(Student student); List<Student> getAll(); }
2.dubbo-demo-service
该层主要实现api的接口,因此该层依赖api层,pom文件的依赖如下
<dependency> <groupId>com.example.dubbo</groupId> <artifactId>dubbo-demo-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
说明:需要在api层执行install的maven命令,把api的jar包生打包到本地.m2仓库。
该层代码结构如下:
-
aop包主要是记录每一个service方法调用时的入参,返回值,执行时间、接口的全名称等信息。
-
impl包实现api的接口逻辑
-
mapper包是mybatis与数据库交互的方法,与mapper.xml对应
-
mapping文件夹下保存所有mapper.xml文件
-
dubbo-config.xml 是dubbo暴露服务的配置文件
impl/DemoApiImpl.java代码
package com.example.dubbo.demo.service.impl; import com.example.dubbo.demo.api.DemoApi; import com.example.dubbo.demo.service.mapper.StudentMapper; import dubbo.demo.model.entity.Student; import java.util.List; import org.apache.dubbo.config.annotation.Service; import org.springframework.beans.factory.annotation.Autowired; /** * * @author chenlong12 * */ @Service public class DemoApiImpl implements DemoApi { @Autowired private StudentMapper studentMapper; /** * 实现 sayHello 接口 * * @param name * @return */ @Override public String sayHello(String name) { return "Hello, " + name + " (from Spring Boot with dubbo-2.7.1)"; } @Override public void add(Student student) { // TODO Auto-generated method stub studentMapper.add(student); } @Override public List<Student> getAll() { // TODO Auto-generated method stub return studentMapper.getAll(); } }
mapper/StudentMapper.java代码
package com.example.dubbo.demo.service.mapper; import java.util.List; import dubbo.demo.model.entity.Student; public interface StudentMapper { void add(Student student); List<Student> getAll(); }
mapping/StudentMapper.xml代码
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.dubbo.demo.service.mapper.StudentMapper"> <resultMap id="StudentResultMap" type="dubbo.demo.model.entity.Student"> <result column="id" jdbcType="INTEGER" property="id" /> <result column="num" jdbcType="VARCHAR" property="num" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="age" jdbcType="INTEGER" property="age" /> <result column="sex" jdbcType="VARCHAR" property="sex" /> </resultMap> <insert id="add" parameterType="dubbo.demo.model.entity.Student"> insert into student (num, name, age,sex) values (#{num},#{name},#{age},#{sex}) </insert> <!--我自己加的方法--> <select id="getAll" resultType="dubbo.demo.model.entity.Student"> select * from student </select> </mapper>
application.properties
dubbo-config.xml会引用该配置文件里的内容
spring.config.name=application # spring 的环境配置 spring.profiles.active=dev # 服务启动端口,即内置 tomcat 启动时占用的端口 server.port=8087 spring.aop.auto=true spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/school?useSSL=false&useUnicode=true&characterEncoding=UTF-8 spring.datasource.username= spring.datasource.password= mybatis.mapper-locations=classpath:mapping/*.xml mybatis.type-aliases-package=dubbo.demo.model.entity # dubbo config # 应用定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识 my.dubbo.application.name=dubbo-demo-service # 应用所属者 my.dubbo.application.owner=ll # 应用所属组织 my.dubbo.application.organization=ll # 使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper # 注册中心id my.dubbo.registry.id=zookeeper-registry # 注册中心协议 my.dubbo.registry.protocol=zookeeper # 注册中心地址 my.dubbo.registry.address=127.0.0.1:2181 # dubbo协议在20880端口暴露服务 # 协议名称 my.dubbo.protocol.name=dubbo # 协议端口 my.dubbo.protocol.port=20880 # 协议访问log my.dubbo.protocol.accesslog=dubbo-access.log # 重试次数 my.dubbo.provider.retries=0 # 超时时间 my.dubbo.provider.timeout=3000 # 注册监控中心 my.dubbo.monitor.protocol=registry
dubbo-config.xml
这dubbo的配置文件,所有的服务都是通过这个配置文件发布出去
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation=" http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字 --> <dubbo:application name="${my.dubbo.application.name}" owner="ll" organization="ll" /> <!-- 使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper--> <dubbo:registry id="zookeeper-registry" protocol="${my.dubbo.registry.protocol}" address="${my.dubbo.registry.address}" /> <!-- dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="${my.dubbo.protocol.name}" port="${my.dubbo.protocol.port}" accesslog="dubbo-access.log"/> <dubbo:provider retries="0" timeout="30000"/> <dubbo:monitor protocol="registry"/> <bean id="demoApiImpl" class="com.example.dubbo.demo.service.impl.DemoApiImpl"></bean> <!-- 使用 dubbo 协议实现定义好的 Service Api 接口--> <dubbo:service interface="com.example.dubbo.demo.api.DemoApi" ref="demoApiImpl" retries="0" timeout="60000"> <dubbo:method name="add" timeout="10000" retries="0" loadbalance="leastactive" actives="5" /> </dubbo:service> </beans>
详细的配置说明请参见dubbo官方文档
http://dubbo.apache.org/zh-cn/docs/user/references/xml/dubbo-service.html
DubboDemoServiceApplication.java
项目启动main方法,项目启动前需要先把zookeeper启动
package com.example.dubbo.demo.service; import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan; import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; //@EnableDubboConfig //@DubboComponentScan("com.example.dubbo.demo.service.impl") @MapperScan("com.example.dubbo.demo.service.mapper") @SpringBootApplication @ImportResource(locations="classpath:dubbo-config.xml") public class DubboDemoServiceApplication { public static void main(String[] args) { SpringApplication.run(DubboDemoServiceApplication.class, args); } }
下一篇咱们介绍怎么用aop获取每一个service服务的入参、出参、执行时间等信息
相关推荐
本项目——"spring+spring mvc+mybatis+mysql+dubbo整合开发任务流程后台管理系统"提供了一个完整的解决方案,涵盖了前端到后端的关键技术栈。下面我们将深入探讨这些技术及其在系统中的作用。 **Spring框架**:...
Spring Framework、SpringMVC、SpringBoot、MyBatis、Dubbo、Redis、Elasticsearch、Spring Security、Thymeleaf、Mysql、Websocket ### 前端技术 Bootstrap、jQuery 1. 分布式:为了解藕和提高扩展性,将系统...
在IT行业中,SpringBoot、MyBatis和Dubbo是三个非常重要的框架,它们分别用于简化Spring应用的初始搭建以及配置、提供高效的持久层解决方案和实现服务间的高并发、低延迟通信。下面将详细介绍这三个框架以及如何将...
本项目"spring+spring mvc+mybatis+mysql+dubbo整合开发任务流程后台管理系统"是基于一系列主流技术栈实现的,旨在提供一个功能完备、稳定可靠的后台管理系统。下面我们将详细探讨这些技术及其在项目中的应用。 ...
《基于Spring MVC+MyBatis+Shiro+Dubbo的分布式后台管理系统详解》 在现代企业级应用开发中,构建高效、稳定且可扩展的后台管理系统是至关重要的。本系统采用了业界广泛使用的四大核心技术——Spring MVC、MyBatis...
《基于Maven构建的SPRING+MYBATIS+ZOOKEEPER+DUBBO的分布式系统详解》 在现代企业级应用开发中,分布式系统已经成为主流。本项目以Maven为构建工具,融合了Spring、MyBatis、ZooKeeper和Dubbo等核心组件,构建了一...
《Spring+SpringMvc+Mybatis+Dubbo整合实践详解》 在现代企业级应用开发中,Spring、SpringMvc、Mybatis和Dubbo是常见的技术栈,它们各自在不同的层面上发挥着关键作用。本篇文章将深入探讨这四大框架的集成与应用...
在SpringBoot项目中,整合Mybatis-Plus并实现多数据源的动态切换,同时支持分页查询是一项常见的需求。以下将详细阐述这个过程中的关键步骤和技术要点。 首先,我们需要引入必要的Maven依赖。这里提到了四个关键...
### 分布式框架简介SSM组合+springmvc+mybatis+shiro+restful+bootstrap #### 一、基础知识与入门 本节主要介绍如何基于SSM(Spring、SpringMVC、MyBatis)框架搭建一个简单的Web应用程序,并实现一个HelloWorld...
【标题】"销售系统项目,spring+spring mvc+mybatis+dubbo+kafka+redis+maven.zip" 提供了一个综合的IT解决方案,涉及到的技术栈主要包括Spring、Spring MVC、MyBatis、Dubbo、Kafka、Redis以及Maven。这个项目采用...
标题 "spring+springmvc+mybatis+shiro+freemarker+dubbo" 涵盖的是一个基于Java的完整Web应用程序开发框架。这个框架结合了Spring、SpringMVC、MyBatis、Shiro、FreeMarker以及Dubbo的核心技术,用于构建高效、可...
Spring MVC + Dubbo + MyBatis + ZooKeeper 这是一个经典的微服务架构组合,用于构建高效、可扩展的分布式系统。下面将详细解释这四个组件及其在实际项目中的作用。 **Spring MVC** Spring MVC 是 Spring 框架的一...
本项目"spring+dubbo+mybatis+springMVC"就是一个典型的例子,它整合了四个非常重要的Java技术栈组件,旨在为开发者提供一套完整的后端服务开发解决方案。 首先,Spring框架是Java企业级应用开发的基石,它提供了...
【标题】"ssm+guns+springboot+dubbo框架整合,影院项目"涉及了四个主要的Java开发框架:Spring、SpringMVC、MyBatis(SSM)以及Dubbo。这是一个实际的影院项目的实现,旨在展示如何将这些框架有效地集成到一个大型...
在本项目实例中,我们探讨的是如何整合SpringBoot、Dubbo、Redis以及RabbitMQ来构建一个高效、可扩展的Java应用程序。以下是对这些技术及其整合的详细解释: 1. **SpringBoot**: SpringBoot是由Pivotal团队提供的...
"spring、spring mvc、mybatis、mysql、dubbo整合开发任务流程后台管理系统"是一个典型的Java企业级应用架构,它涵盖了Web层、持久层、服务层以及分布式服务调用等多个层面的技术。以下是对这些技术组件的详细介绍:...
【标题】"spring,mybatis,hibernate,activemq,redis,dubbo的集成" 这个标题提及的是一个综合性的Java开发项目,它整合了多个流行的技术框架和中间件,旨在提供一个全面的后端服务解决方案。让我们逐一探讨这些...
本项目基于Java技术栈,使用了Spring、SpringMVC、MyBatis、Dubbo、Redis和Netty等核心组件,构建了一个完整的分布式系统。 1. **Spring**:Spring 是一个全面的Java企业级应用开发框架,它提供了依赖注入(DI)和...
2. **MyBatis**:MyBatis是一个持久层框架,它允许开发者将SQL语句与Java代码相结合,提供了更灵活的数据库操作方式。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索,使得数据库操作更加简洁、...