【dubbo系列一】搭建 dubbo 框架

目录

注册中心 interface

 pom.xml配置

服务端 (提供层provider)

 dubbo-privder.xml下配置信息

pom.xml配置

客户端 消费层consumer

 dubbo-consumer.xml配置信息

pom.xml配置

测试类@Component 项目 @Controller

dubbo-父项目 pom.xml配置

consumer和provider是框架中必然存在的,Registry做为全局配置信息管理模块,推荐生产环境使用Registry,可实时推送现存活的服务提供者,Monitor一般用于监控和统计RPC调用情况、成功率、失败率等情况,让开发及运维了解线上运行情况

 应用执行过程大致如下:

  1. 启动服务者,根据协议信息绑定到配置的IP和端口上,如果已有绑定过相同IP和端口则跳过
  2. 注册服务信息至注册中心
  3. 客服端启动,根客户端启动,根据接口和协议信息订阅注册中心中注册的服务,注册中心将存活的服务地址通知到客户端,当有服务信息变更时客户端可以通过定时通知得到变更信息
  4. 在客户端需要调用服务时,从内存中拿到上次通知的所有存活服务地址,根据路由信息和负载均衡机制选择最终调用的服务地址,发起调用
  5. 通过filter分别在客户端发送请求前和服务端接收请求后,通过异步记录一些需要的信息传递到monitor做监控或者统计

注册中心 interface

 pom.xml配置

   <dependencies>
        <!--spring框架-->
        <!--用于spring整体整合的jar包 {jdbc+web+test+mvc+核心}-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <!--<version>5.1.5.RELEASE</version>-->
        </dependency>
        <!--分页管理-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <!--<version>5.1.2</version>-->
        </dependency>
        <!--hutool工具类-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.17</version>
        </dependency>
    </dependencies>

服务端 (提供层provider)

 dubbo-privder.xml下配置信息

<?xml version="1.0" encoding="UTF-8"?>
<!--suppress SpringFacetInspection -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://dubbo.apache.org/schema/dubbo
       https://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!--配置应用名 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="student-app"  />

    <!--配置dubbo注解识别处理器,不指定包名的话会在spring bean中查找对应实例的类配置了dubbo注解的-->
    <dubbo:annotation package="com.cxl.service"></dubbo:annotation>

    <!-- 配置注册中心,通过group指定注册中心分组,可通过register配置是否注册到该注册中心以及subscribe配置是否从该注册中心订阅, -->
    <dubbo:registry address="zookeeper://192.168.182.130:2182" group="test"/>

    <!-- 配置服务协议,通过IP指定绑定的IP地址,不指定或者指定非法IP的情况下会绑定在0.0.0.0 -->
    <dubbo:protocol name="dubbo" port="20882" />

    <!--通过xml配置文件配置服务暴露,首先要有个spring bean实例(无论是注解配置的还是配置文件配置的),在下面ref中指定bean实例ID,作为服务实现类-->
    <!-- <dubbo:service interface="com.cxl.service.StudentService" ref="StudentServiceImpl" version="1.0"></dubbo:service>
 		-->
</beans>

通过注解方式配置服务暴露,Component是Spring bean注解,Service是dubbo的注解(不要和spring bean的service注解弄混),如前文所述,dubbo注解只会在spring bean中被识别

import com.cxl.service.StudentService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;

@Component
@Service(version="1.0")  //版本可省略
public class StudentServiceImpl1 implements StudentService {

    @Override
    public List<Student> list() {
        ArrayList<Student> list = new ArrayList<>();
        return list;
    }
}

pom.xml配置

<dependencies>
        <!-- dubbo依赖 -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <type>pom</type>
        </dependency>

        <!-- spring的jar包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <!-- 引用版本 -->
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>

        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
        <!-- mybatis-spring 整合jar -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
        </dependency>

        <!-- druid数据源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <!-- Mysql数据库驱动包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- 日志文件管理包 -->
        <!-- log start -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>

        <!-- 单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <!--读写各种格式文件的 Java API-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
        </dependency>

        <!-- JSP相关 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <!-- <scope>provided</scope>-->
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <!--<scope>provided</scope>的作用就是让servlet-api依赖只在编译的时候起作用,
            运行的时候不起作用,避免和Tomcat自带的依赖产生冲突
            作用:限制该依赖只在编译和测试的时候用,这样在tomcat启动时就不会产生冲突
            -->
            <scope>provided</scope>
        </dependency>

        <!-- 依赖的公共包 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

        <!-- AOP切面依赖 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
        </dependency>
        <!-- 303校验 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
        </dependency>
        <!-- mybaits pagehelper 分页助手 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
        </dependency>

        <!-- 富文本编辑器使用该文件上传 -->
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
        </dependency>
        <!--json解析-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <!-- JSON -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <!--连接数据库所用到的新版mysql-connector-java依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.4.15.v20190215</version>
                <configuration>
                    <httpConnector>
                        <!-- 端口号 -->
                        <port>81</port>
                        <!--访问路径 -->
                        <host>localhost</host>
                    </httpConnector>
                    <!--监听整个项目,如果项目源码改变,1秒后 jetty自动重启 -->
                    <scanIntervalSeconds>1</scanIntervalSeconds>

                    <!-- 配置jetty虚拟路径 -->
                    <contextHandlers>
                        <jettyWebAppContext>
                            <!--虚拟路径 访问路径 -->
                            <contextPath>/pic/</contextPath>
                            <!-- 物理路径 -->
                            <resourceBase>D:/pic/</resourceBase>
                        </jettyWebAppContext>
                    </contextHandlers>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <!--排除测试类,打包不打测试类-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.4.2</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>

        </plugins>
    </build>

客户端 消费层consumer

 dubbo-consumer.xml配置信息

<?xml version="1.0" encoding="UTF-8"?>
<!--suppress SpringFacetInspection -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://dubbo.apache.org/schema/dubbo
       https://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    <!--配置应用名 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="consumer"></dubbo:application>

    <!--配置dubbo注解识别处理器,不指定包名的话会在spring bean中查找对应实例的类配置了dubbo注解的-->
    <dubbo:annotation package="com.cxl.controller"></dubbo:annotation>

    <!-- 配置注册中心,通过group指定注册中心分组,可通过register配置是否注册到该注册中心以及subscribe配置是否从该注册中心订阅, -->
    <dubbo:registry address="zookeeper://192.168.182.130:2182" group="test"></dubbo:registry>
</beans>

配置客户端reference bean。客户端跟服务端不同的是客户端这边没有实际的实现类的,所以配置的dubbo:reference实际会生成一个spring bean实例,作为代理处理Dubbo请求,然后其他要调用处直接使用spring bean的方式使用这个实例即可。

xml配置文件配置方式,id即为spring bean的id,之后无论是在spring配置中使用ref="firstDubboService"还是通过@Autowired注解都OK

<dubbo:reference interface="com.web.foo.service.StudentService"
		version="1.0" id="studentService" ></dubbo:reference>

另外开发、测试环境可通过指定Url方式绕过注册中心直连指定的服务地址,避免注册中心中服务过多,启动建立连接时间过长,如

<dubbo:reference interface="com.web.foo.service.StudentService"
		version="1.0" id="studentService" url="dubbo://192.168.182.130:20882/"></dubbo:reference>

pom.xml配置

<dependencies>
  
    <!-- dubbo依赖 -->
    <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-dependencies-zookeeper</artifactId>
      <type>pom</type>
    </dependency>
    <!--springmvc核心jar包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
    </dependency>
    <!-- 上传组件包 -->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <!-- JSP相关 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <!--分页-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>9.4.15.v20190215</version>
        <configuration>
          <httpConnector>
            <!-- 端口号 -->
            <port>80</port>
            <!--访问路径 -->
            <host>localhost</host>
          </httpConnector>
          <!--监听整个项目,如果项目源码改变,1秒后 jetty自动重启 -->
          <scanIntervalSeconds>1</scanIntervalSeconds>

          <!-- 配置jetty虚拟路径 -->
          <contextHandlers>
            <jettyWebAppContext>
              <!--虚拟路径 访问路径 -->
              <contextPath>/pic/</contextPath>
              <!-- 物理路径 -->
              <resourceBase>D:/pic/</resourceBase>
            </jettyWebAppContext>
          </contextHandlers>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>

      <!--排除测试类,打包不打测试类-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.4.2</version>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>

    </plugins>
  </build>

测试类@Component 项目 @Controller

@Component
public class Consumer
{
	@Reference(version="1.0")	//版本可省略
	StudentService studentService;
	
	public void test()
	{
   	ArrayList<Student> list = studentService.list();
    	list.forEach(x->{
    		System.out.println("x is"+x);
    	});    		
	}
}

dubbo-父项目 pom.xml配置

 <properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <!--用于spring整体整合的jar包 {jdbc+web+test+mvc+核心}-->
    <spring.version>5.1.5.RELEASE</spring.version>
    <!-- aop使用 -->
    <aspectj-version>1.8.0</aspectj-version>
    <!--日志-->
    <log4j.version>1.2.17</log4j.version>
    <!--丰富的打印控制台输出源-->
    <log4japi.version>1.7.26</log4japi.version>
    <!--数据库连接池jar包 ,简称druid数据源-->
    <druid.version>1.0.9</druid.version>
    <!--mysql-->
    <mysql.version>5.1.6</mysql.version>
    <!-- mybatis核心包-->
    <mybatis.version>3.4.2</mybatis.version>
    <!--mybatis整合spring的jar包-->
    <mybatis.spring.version>1.3.0</mybatis.spring.version>
    <!--JSON解析   >>  JSON格式的数据转化为类对象-->
    <jackson.version>2.9.8</jackson.version>
    <!--后端注解 303 效验-->
    <validator.version>6.0.10.Final</validator.version>
    <!--用于读写各种格式文件的 Java API的jar包-->
    <poi.version>3.9</poi.version>
    <!--JSP标准标签库 >> 例:fmt、form等-->
    <jstl.version>1.2</jstl.version>
    <jsp-api.version>2.0</jsp-api.version>
    <!--servlet-api 是提供编写servlet时要用到  HttpServletRequest和HttpServletResponse HttpSession等
    作用: 要求编写server代码用我们自己的jar包  运行用tomcat包 后面有解释-->
    <servlet-api.version>2.5</servlet-api.version>
    <!--雪花算法-->
    <commons-lang3.version>3.8.1</commons-lang3.version>
    <commons-io.version>2.2</commons-io.version>
    <commons-net.version>3.3</commons-net.version>
    <commons-fileupload.version>1.3.1</commons-fileupload.version>
    <!--单元测试-->
    <junit-version>4.12</junit-version>
    <fast-json-version>1.2.7</fast-json-version>
    <!-- 分页助手 -->
    <pagehelper-version>5.1.2</pagehelper-version>
    <json-simple-version>1.1.1</json-simple-version>
    <common-logging-version>1.2</common-logging-version>
    <jsp-api-version>2.2</jsp-api-version>
    <jedis-version>2.9.0</jedis-version>
    <!--elasticsearch-->
    <spring-elasticsearch-version>3.1.5.RELEASE</spring-elasticsearch-version>
    <!-- redis -->
    <spring-data-redis-version>2.1.5.RELEASE</spring-data-redis-version>
    <!-- kafka -->
    <spring-kafka-version>2.2.4.RELEASE</spring-kafka-version>
    <!--dubbo框架-->
    <dubbo.version>2.7.10</dubbo.version>


  </properties>
  <!--开启依赖管理-->
  <dependencyManagement>
    <dependencies>
      <!-- dubbo依赖 -->
      <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo</artifactId>
        <version>${dubbo.version}</version>
        <!-- 排斥spring框架 -->
        <!--        <exclusions>
                  <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context</artifactId>
                  </exclusion>
                </exclusions>-->
      </dependency>
      <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-dependencies-zookeeper</artifactId>
        <version>${dubbo.version}</version>
        <type>pom</type>
      </dependency>


      <!--支付宝支付-->
      <dependency>
        <groupId>com.alipay.sdk</groupId>
        <artifactId>alipay-sdk-java</artifactId>
        <version>4.9.28.ALL</version>
      </dependency>

      <!--elasticsearch-->
      <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-elasticsearch</artifactId>
        <version>${spring-elasticsearch-version}</version>
      </dependency>

      <!-- kafka整合包 -->
      <dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka</artifactId>
        <version>${spring-kafka-version}</version>
      </dependency>

      <!-- redis -->
      <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>${jedis-version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-redis</artifactId>
        <version>${spring-data-redis-version}</version>
      </dependency>

      <!-- spring的jar包 -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <!-- 引用版本 -->
        <version>${spring.version}</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
      </dependency>

      <!-- mybatis核心包 -->
      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
      </dependency>
      <!-- mybatis-spring 整合jar -->
      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>${mybatis.spring.version}</version>
      </dependency>

      <!-- druid数据源 -->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
      </dependency>
      <!-- Mysql数据库驱动包 -->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
        <scope>runtime</scope>
      </dependency>

      <!-- 日志文件管理包 -->
      <!-- log start -->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${log4japi.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${log4japi.version}</version>
      </dependency>

      <!-- 单元测试 -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit-version}</version>
        <scope>test</scope>
      </dependency>

      <!-- 上传组件包 -->
      <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${commons-fileupload.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io.version}</version>
      </dependency>
      <!--读写各种格式文件的 Java API-->
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>${poi.version}</version>
      </dependency>

      <!-- JSP相关 -->
      <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <!-- <scope>provided</scope>-->
      </dependency>

      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>${servlet-api.version}</version>
        <!--<scope>provided</scope>的作用就是让servlet-api依赖只在编译的时候起作用,
        运行的时候不起作用,避免和Tomcat自带的依赖产生冲突
        作用:限制该依赖只在编译和测试的时候用,这样在tomcat启动时就不会产生冲突
        -->
        <scope>provided</scope>
      </dependency>

      <!-- 依赖的公共包 -->
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons-lang3.version}</version>
      </dependency>

      <!-- AOP切面依赖 -->
      <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>${aspectj-version}</version>
      </dependency>
      <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>${aspectj-version}</version>
      </dependency>
      <!-- 303校验 -->
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>${validator.version}</version>
      </dependency>
      <!-- mybaits pagehelper 分页助手 -->
      <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>${pagehelper-version}</version>
      </dependency>

      <!-- 富文本编辑器使用该文件上传 -->
      <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>${json-simple-version}</version>
      </dependency>
      <!--json解析-->
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <!-- JSON -->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.47</version>
      </dependency>
      <!--连接数据库所用到的新版mysql-connector-java依赖-->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.27</version>
      </dependency>

    </dependencies>
  </dependencyManagement>
  <build>
    <plugins>
      <!--指明jdk版本,防止出现版本不匹配问题-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <!--排除测试类,打包不打测试类-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.4.2</version>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>
    </plugins>
  </build>

dubbo系列文章

     【dubbo系列二】负载均衡_萌小崔的博客-CSDN博客

     【dubbo系列三】容错机制_萌小崔的博客-CSDN博客

     【dubbo系列四】熔断-服务降级_萌小崔的博客-CSDN博客

     ​【dubbo系列五】分组聚合_萌小崔的博客-CSDN博客


Thanks!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北九二七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值