1. 基于注解
1.1. provider 配置資訊
application.yml
spring:
dubbo:
server: true
registry: zookeeper://127.0.0.1:2181
application:
name: dubbo-provider
server:
port: 8089
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.11</version>
</dependency>
</dependencies>
User.java
import java.io.Serializable;
public class User implements Serializable
{
private int id;
private String name;
private int age;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
@Override
public String toString()
{
return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';
}
}
UserInfo.java
public interface UserInfo
{
User findUserById(int id);
}
UserInfoImp.java
@Service
//@Service(version = "1.0.0",timeout = 10000,interfaceClass = UserInfo.class)
@Component
public class UserInfoImp implements UserInfo
{
@Override
public User findUserById(int id)
{
User u = new User();
u.setId(id);
u.setAge(18);
u.setName("test");
return u;
}
}
DemoProviderApplication.java
@SpringBootApplication
@EnableDubboConfiguration
public class DemoProviderApplication
{
public static void main(String[] args) throws IOException
{
SpringApplication.run(DemoProviderApplication.class, args);
}
}
1.2. consumer 配置資訊
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.spring.dubbo.provider</groupId>
<artifactId>demo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
pom.yml
spring:
dubbo:
application:
name: consumer
registry:
address: zookeeper://127.0.0.1:2181
protocol:
port: 20800
name: dubbo
server:
port: 8088
UserInfoController.java
@RestController
public class UserInfoController
{
@Reference
// @Reference(version = "1.0.0")
private UserInfo userInfo;
@RequestMapping("/userInfo")
public User userInfo()
{
return userInfo.findUserById(101);
}
}
DemoApplication.java
@EnableDubboConfiguration
@SpringBootApplication
public class DemoApplication
{
public static void main(String[] args)
{
SpringApplication.run(DemoApplication.class, args);
}
}
2. 基于xml
2.1 provider
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.11</version>
</dependency>
</dependencies>
<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="springboot-dubbo-provider"/>
<!-- 注冊中心配置,使用zookeeper注冊中心暴露服務位址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" timeout="60000" />
<!-- 使用注解方式暴露接口,會自動掃描package下所有包中dubbo相關的注解,這樣就不用在xml中再針對每個服務接口配置dubbo:service interface-->
<dubbo:annotation package="com.spring.dubbo.provider"/>
<!--<dubbo:service inter ref="SayHelloImpl"/>-->
</beans>
@SpringBootApplication
@ImportResource(value = {"classpath:dubbo-provider.xml"})
public class ProviderApplication
{
public static void main(String[] args)
{
SpringApplication.run(ProviderApplication.class, args);
}
}
public interface SayHello
{
String sayHello();
}
@Service
public class SayHelloImp implements SayHello
{
@Override
public String sayHello()
{
return "Hello spring dubbo~";
}
}
2.1 consumer
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.spring.dubbo</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<?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="springboot-dubbo-consumer"/>
<!-- 注冊中心配置,使用zookeeper注冊中心暴露服務位址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" timeout="60000" />
<!-- 使用注解方式建立遠端服務代理-->
<dubbo:annotation package="com.spring.dubbo.consumer"/>
<!--聲明服務引用,與服務聲明接口類型一緻-->
<!--<dubbo:reference inter id="SayHelloImpl"/>-->
</beans>
@SpringBootApplication
@ImportResource("classpath:dubbo-consumer.xml")
public class ConsumerApplication
{
public static void main(String[] args)
{
SpringApplication.run(ConsumerApplication.class, args);
}
}
@RestController
public class ConsumerSayHello
{
@Reference
private SayHello sayHello;
@RequestMapping("/sayHello")
public String sayHello()
{
return sayHello.sayHello();
}
}