Spring boot和dubbo结合,比较简单,没有什么特殊配置。demo工程结构如下:
- 父pom.xml添加依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
- 建立接口类
public interface UserService {
public String getUserName();
}
- 提供者实现接口
public class UserServiceImpl implements UserService {
public String getUserName() {
System.out.println("Being invoked");
return "test user";
}
}
- 提供者dubbo配置
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.example.interfaces.UserService" ref="userService" protocol="dubbo">
</dubbo:service>
<!-- 和本地bean一样实现服务 -->
<bean id="userService" class="com.example.UserServiceImpl" />
- 提供者application.yml配置
server:
port: 8090
address: 127.0.0.1
contextPath: /aaa
- 提供者启动类
@ImportResource("classpath:dubbo/provider.xml")
@SpringBootApplication
public class ApplicationProvider {
public static void main(String[] args) {
SpringApplication.run(ApplicationProvider.class, args);
}
}
- 消费者dubbo配置
<dubbo:reference id="userService" interface="com.example.interfaces.UserService" />
- 消费者application.yml配置
server:
port: 8099
address: 127.0.0.1
contextPath: /
- 消费者
@RestController
@EnableAutoConfiguration
public class Consumer {
@Autowired
private UserService userService;
@RequestMapping("/")
String consume() {
return userService.getUserName();
}
}
- 消费者启动类
@ImportResource("classpath:dubbo/consumer.xml")
@SpringBootApplication
public class ApplicationConsumer {
public static void main(String[] args) {
SpringApplication.run(ApplicationConsumer.class, args);
}
}
- 提供者消费者pom都依赖spring boot,zk,dubbo
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
public interface UserService {
public String getUserName();
}
public class UserServiceImpl implements UserService {
public String getUserName() {
System.out.println("Being invoked");
return "test user";
}
}
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.example.interfaces.UserService" ref="userService" protocol="dubbo">
</dubbo:service>
<!-- 和本地bean一样实现服务 -->
<bean id="userService" class="com.example.UserServiceImpl" />
server:
port: 8090
address: 127.0.0.1
contextPath: /aaa
@ImportResource("classpath:dubbo/provider.xml")
@SpringBootApplication
public class ApplicationProvider {
public static void main(String[] args) {
SpringApplication.run(ApplicationProvider.class, args);
}
}
<dubbo:reference id="userService" interface="com.example.interfaces.UserService" />
server:
port: 8099
address: 127.0.0.1
contextPath: /
@RestController
@EnableAutoConfiguration
public class Consumer {
@Autowired
private UserService userService;
@RequestMapping("/")
String consume() {
return userService.getUserName();
}
}
@ImportResource("classpath:dubbo/consumer.xml")
@SpringBootApplication
public class ApplicationConsumer {
public static void main(String[] args) {
SpringApplication.run(ApplicationConsumer.class, args);
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
总体看,dubbo没有什么新的配置,提供者消费者都依赖spring Boot包。
我使用本地zookeeper和dubbo admin,提供者启动类(ApplicationProvider)启动后,能够从dubbo admin看到提供者。
消费者启动类(ApplicationConsumer)启动,通过浏览器访问http://localhost:8099/,页面输出:test user,即调用成功。
代码打包下载地址:
http://download.csdn.net/download/earthhour/9938854