springboot整合dubbo

1、创建三个工程:api(jar)、service(jar)、test(war)。

2、img-api:

package com.demo.service;

import java.util.List;
import com.demo.module.Img;

public interface ImgService {
	List<Img> selectAll();

}

3、img-service:

       

首先pom加上依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.demo</groupId>
	<artifactId>img-service</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<!-- springBoot -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.4.1.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- api -->
		<dependency>
			<groupId>com.demo</groupId>
			<artifactId>img-api</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.21</version>
		</dependency>


		<!-- dubbo -->
		<dependency>
			<groupId>com.alibaba.spring.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>
	</dependencies>

</project>

  实现层:


package com.demo.serviceImpl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.demo.mapper.ImgMapper;
import com.demo.module.Img;
import com.demo.service.ImgService;

@Service("imgService")
public class ImgServiceImpl implements ImgService{
	
	@Autowired
	private ImgMapper imgMapper;

	@Override
	public List<Img> selectAll() {		
		return imgMapper.selectAll();
	}

}

  properties配置数据库和Mybatis:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/aaa?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=wtyy

mybatis.mapper-locations=classpath*:mapper/*Mapper.xml

#spring.dubbo.application.name=img-service
#spring.dubbo.registry.address=zookeeper://127.0.0.1
#spring.dubbo.registry.port=2181
#spring.dubbo.base-package=com.demo.serviceImpl
#spring.dubbo.protocol.name=dubbo
server.port=8081

  dubbo配置文件provider.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="img-service"/>
    <!-- 使用zookeeper做为注册中心 -->
    <dubbo:registry  protocol="zookeeper" address="zookeeper://127.0.0.1:2181"  register="false"/>
    
   
	<!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
	<!-- 用dubbo协议在20880端口暴露服务 -->
	<dubbo:protocol name="dubbo" port="20881" />
    
    <!-- ref中的值要跟服务实现类中的@Server的值一致 -->
    <dubbo:service interface="com.demo.service.ImgService" ref="imgService"></dubbo:service>
</beans>

  启动类:


package com.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfig;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;

 @SpringBootApplication
 @MapperScan("com.demo.mapper")
 @ImportResource("classpath:provider.xml")
public class ServiceStart {
	 public static void main(String[] args) {
		SpringApplication.run(ServiceStart.class, args);
	}

}

4、img-test应用:

    

  添加pom依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.demo</groupId>
  <artifactId>img-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <!-- springBoot -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.4.1.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- api -->
		<dependency>
			<groupId>com.demo</groupId>
			<artifactId>img-api</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>

	<!-- dubbo -->
		<dependency>
			<groupId>com.alibaba.spring.boot</groupId>
			<artifactId>dubbo-spring-boot-starter</artifactId>
			<version>2.0.0</version>
		</dependency>


	</dependencies>


</project>

  properties配置文件:

#spring.dubbo.application.name=img-test
#spring.dubbo.registry.address=zookeeper://127.0.0.1
#spring.dubbo.registry.port=2181
#spring.dubbo.base-package=com.demo.service
#spring.dubbo.protocol.name=dubbo
server.port=8888

配置port是防止先启动service再启动rest出现端口占用问题,但有时候只配port会报错:

解决方法是加上数据库的配置(虽然没有用,但是不报错了):

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/aaa?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=wtyy

 dubbo配置文件consumer.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="img-test"></dubbo:application>
   

    <!-- zookeeper作为注册中心 -->
    <dubbo:registry  protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
    <!-- 生成远程服务代理 -->
    <dubbo:reference interface="com.demo.service.ImgService" id="imgService"  
    	 url="dubbo://127.0.0.1:20881"/>
</beans>

  启动类:


package com.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfig;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;

 @SpringBootApplication
 @EnableDubboConfiguration
 @ImportResource("classpath:consumer.xml")
public class RestStart {
	public static void main(String[] args) {
		SpringApplication.run(RestStart.class, args);
	}

}

先启动service,再启动test,运行如下:

相关推荐

  1. SpringBoot-Dubbo-Zookeeper

    2024-01-05 12:26:02       40 阅读
  2. SpringBoot + Dubbo + zookeeper实现

    2024-01-05 12:26:02       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 12:26:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 12:26:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 12:26:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 12:26:02       20 阅读

热门阅读

  1. 面试算法92:翻转字符

    2024-01-05 12:26:02       32 阅读
  2. Go语言断言和类型查询

    2024-01-05 12:26:02       38 阅读
  3. 16.Linux Bash Shell通过`read`命令读取用户输入

    2024-01-05 12:26:02       43 阅读
  4. python 堆栈

    2024-01-05 12:26:02       27 阅读
  5. Vue当中的observable是什么?怎么用

    2024-01-05 12:26:02       31 阅读
  6. UI自动化Selenium 页面窗口window定位切换

    2024-01-05 12:26:02       35 阅读