基于maven搭建springboot+dubbo+zk框架(单机)

首先需要先下载zk,然后运行,这里网上很多,不在赘述。

接着新建maven工程,我这里规划时这样的,一个consumer工程(服务消费者),一个provider工程(服务提供者),还有一个interface工程(公共接口依赖包,抽象出的服务提供方公共接口)。

1.先建立interface工程,然后打jar包,之后引入本地maven仓库

接口:

package com.example.demo.service;

public interface DubboService {
  public String findName() ;
}
这里要注意的是如何把工程打成jar包

需要再pom文件<plugins>下添加配置,把自带的spring-boot-maven-plugin这个plugin删除

            <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <classesDirectory>target/classes/</classesDirectory>
                    <archive>
                        <manifest>
                            <mainClass>com.alibaba.dubbo.container.Main</mainClass>
                            <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
                            <useUniqueVersions>false</useUniqueVersions>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>.</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            
            <!-- 把依赖的jar包,打成一个lib文件夹 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <type>jar</type>
                            <includeTypes>jar</includeTypes>
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>    

 然后右击工程-》run as-》maven install。接着在target文件夹下就会产生jar包(没有就刷新下工程)

接着就是想办法把jar包引入maven仓库

进入命令行界面输入

mvn install:install-file   -Dfile=D:\workspace\dubboInterface\target\demo-0.0.1-SNAPSHOT.jar  -DgroupId=com.sina  -DartifactId=demo-0.0.1-SNAPSHOT -Dversion=1.0  -Dpackaging=jar

参数解析:

-Dfile:jar包路径

-DgroupId和-DartifactId是定义jar包在maven仓库的位置

执行成功后即可在pom文件引用jar包了(有人eclipse配置的settings和系统安装maven目录settings不是同一个,会造成jar包注入到默认文件夹下,这里需要修改安装的maven里conf下settings本地仓库的位置

2.接下来就是建立consumer工程。

首先贴上pom文件

首先需要先下载zk,然后运行,这里网上很多,不在赘述。

接着新建maven工程,我这里规划时这样的,一个consumer工程(服务消费者),一个provider工程(服务提供者),还有一个interface工程(公共接口依赖包,抽象出的服务提供方公共接口)。

1.先建立interface工程,然后打jar包,之后引入本地maven仓库

接口:

package com.example.demo.service;

public interface DubboService {
  public String findName() ;
}
这里要注意的是如何把工程打成jar包

需要再pom文件<plugins>下添加配置,把自带的spring-boot-maven-plugin这个plugin删除

            <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <classesDirectory>target/classes/</classesDirectory>
                    <archive>
                        <manifest>
                            <mainClass>com.alibaba.dubbo.container.Main</mainClass>
                            <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
                            <useUniqueVersions>false</useUniqueVersions>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>.</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            
            <!-- 把依赖的jar包,打成一个lib文件夹 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <type>jar</type>
                            <includeTypes>jar</includeTypes>
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>    

 然后右击工程-》run as-》maven install。接着在target文件夹下就会产生jar包(没有就刷新下工程)

接着把jar包放在一个地方,把jar包引入maven仓库

进入命令行界面输入

mvn install:install-file   -Dfile=D:\workspace\dubboInterface\target\demo-0.0.1-SNAPSHOT.jar  -DgroupId=com.sina   -DartifactId=demo-0.0.1-SNAPSHOT -Dversion=1.0  -Dpackaging=jar

参数解析:

-Dfile:jar包路径

-DgroupId和-DartifactId是定义jar包在maven仓库的位置

执行成功后即可在pom文件引用jar包了(有人eclipse配置的settings和系统安装maven目录settings不是同一个,会造成jar包注入到默认文件夹下,这里需要修改安装的maven里conf下settings本地仓库的位置)

2.接下来就是建立consumer工程。

结构贴一下,我这里是有链接数据库,可以忽略。

首先pom文件引入配置

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.8</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.3</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

         <!-- 本地公共接口jar包 。注意这里是引入刚刚注入到maven仓库的公共接口jar包-->
         <dependency>
         <groupId>com.sina</groupId>
        <artifactId>demo-0.0.1-SNAPSHOT</artifactId>         
           <version>1.0</version>        
        </dependency>

spring-dubbo.xml的配置

<?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://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="consumer"/>
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <dubbo:protocol name="dubbo" port="20881"/>
      <dubbo:reference id="dubboService" check="false" interface="com.example.demo.service.DubboService"/>
      <dubbo:annotation package="controller"/>
</beans>

application.yml配置(可以只配置端口,忽略数据库连接配置)

server:
  port: 8083
spring:
  datasource:
    name: localhost
    url: jdbc:mysql://localhost:3306/mydata?useUnicode=true&;characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    dbcp:
      max-active: 20
      initial-size: 5
      min-idle: 5
      max-wait: 5000       
mybatis:
  mapper-locations: classpath:mapping/*.xml
  type-aliases-package: com.example.demo.model

 

DemoApplication.java在添加注解

@MapperScan("com.example.demo.mapper")//支持mybatis可以忽略
@ImportResource({"classpath:spring-dubbo.xml"})//加载dubbo配置文件

编写测试类

这样就配置完成了。

接着provider工程建立

目录结构和consumer一样

pom文件的引入
         <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>dubbo</artifactId>
         <version>2.5.5</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
      </dependency>

      <!--zookeeper的客户端依赖-->
      <dependency>
         <groupId>com.101tec</groupId>
         <artifactId>zkclient</artifactId>
         <version>${zkclient.version}</version>
      </dependency>
         <dependency>
             <groupId>com.sina</groupId>
            <artifactId>demo-0.0.1-SNAPSHOT</artifactId>         
            <version>1.0</version>        
        </dependency>

spring-dubbo.xml配置:

<?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://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="provider"/>
    <!-- 注册中心的ip地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
<!--     <dubbo:annotation package="service.impl"/> -->

    <!-- use dubbo protocol to export service on port 20880 -->
    <dubbo:protocol name="dubbo" port="20880"/>

    <!-- service implementation, as same as regular local bean -->
    <bean id="dubboService" class="com.example.demo.service.impl.DubboServiceImpl"/>
    <!-- declare the service interface to be exported -->
    <dubbo:service interface="com.example.demo.service.DubboService" ref="dubboService"/>
</beans>

 

application.properties(和yml一样的功能)

server.port=8081 
spring.datasource.name=localhost
spring.datasource.url=jdbc:mysql://localhost:3306/mydata?useUnicode=true&;characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dbcp.max-active=20
spring.datasource.dbcp.initial-size=5
spring.datasource.dbcp.min-idle=5
spring.datasource.dbcp.max-wait=9000
mybatis.mapper-locations=classpath:mapping/*.xml
mybatis.type-aliases-package=com.example.demo.model

 

ServiceApplication.java

 类需实现引入jar包里的公共接口

这样工程就ok了。

启动zk,运行工程。

通过zkCli.cmd(windows系统)进入zk,通过命令可以看到注册的接口

我们在查看两个服务都已经注册

接着调用就行了,后面的运行方法就不多说了,因为下班了,哈哈哈哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值