參考資料:http://www.javashuo.com/article/p-cweqhrkt-kx.htmljava
項目名稱爲springboot-dubbo,包含springboot-dubbo-consumer、springboot-dubbo-provider兩個模塊。git
File -> New -> Project -> Spring Initializrgithub
以下圖:輸入Group、Artifact等信息,Type選擇Maven Pom web
而後一直點擊Next,最後Finish便可。spring
最後項目生成後結構只有一個pom.xml文件,無src目錄,以下圖apache
完整pom.xml以下:瀏覽器
<?xml version="1.0" encoding="UTF-8"?> <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.lnjecit</groupId> <artifactId>springboot-dubbo-provider</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <dubbo-spring-boot-starter.version>0.2.0</dubbo-spring-boot-starter.version> </properties> <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.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>${dubbo-spring-boot-starter.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
application.properties配置以下:springboot
server.port=8080
# Dubbo Config properties
dubbo.application.name=springboot-dubbo-provider
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.registry.address=zookeeper://localhost:2181
dubbo.scan.basePackages=com.lnjecit.service.impl
定義接口:UserServiceapp
package com.lnjecit.service; import java.util.List; /** * @author lnj * createTime 2018-11-05 20:55 **/ public interface UserService { List<String> query(); }
定義接口實現類:UserServiceImpl maven
package com.lnjecit.service.impl; import com.alibaba.dubbo.config.annotation.Service; import com.lnjecit.service.UserService; import java.util.ArrayList; import java.util.List; /** * @author lnj * createTime 2018-11-05 20:56 **/ @Service public class UserServiceImpl implements UserService { @Override public List<String> query() { List<String> userList = new ArrayList<>(); userList.add("李白"); userList.add("杜甫"); userList.add("白居易"); return userList; } }
啓動類SpringbootDubboProviderApplication :
package com.lnjecit; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringbootDubboProviderApplication { public static void main(String[] args) { SpringApplication.run(SpringbootDubboProviderApplication.class, args); } }
運行UserApplication類,啓動服務。
完整pom.xml以下:
<?xml version="1.0" encoding="UTF-8"?> <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.lnjecit</groupId> <artifactId>springboot-dubbo-consumer</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot-dubbo-consumer</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <dubbo-spring-boot-starter.version>0.2.0</dubbo-spring-boot-starter.version> </properties> <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.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>${dubbo-spring-boot-starter.version}</version> </dependency> <dependency> <groupId>com.lnjecit</groupId> <artifactId>springboot-dubbo-provider</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
定義UserController類:
package com.lnjecit.controller; import com.alibaba.dubbo.config.annotation.Reference; import com.lnjecit.service.UserService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @author lnj * createTime 2018-11-05 21:09 **/ @RequestMapping("user") @RestController public class UserController { @Reference private UserService userService; @GetMapping("list") public List<String> list() { return userService.query(); } }
啓動類SpringbootDubboConsumerApplication :
package com.lnjecit; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringbootDubboConsumerApplication { public static void main(String[] args) { SpringApplication.run(SpringbootDubboConsumerApplication.class, args); } }
運行SpringbootDubboProviderApplication類,啓動服務。
提供者和消費者服務啓動後,在瀏覽器中輸入:http://localhost:8081/user/list,可看到以下信息
https://github.com/linj6/springboot-learn/tree/master/springboot-dubbo