1.接口模块(01-springboot-dubbo-interface)
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.cx.springboot</groupId>
<artifactId>01-springboot-dubbo-interface</artifactId>
<version>1.0.0</version>
</project>
com.cx.springboot.dubbo.bo.User
public class User implements Serializable {
private int id;
private String name;
private String sex;
...
}
com.cx.springboot.dubbo.service.UserService
public interface UserService {
String sayHi(String name);
User getUser(int id);
}
2. provider
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cx.springboot</groupId>
<artifactId>02-springboot-dubbo-provider</artifactId>
<version>1.0.0</version>
<name>02-springboot-dubbo-provider</name>
<description>Project for Spring Boot</description>
<properties>
<java.version>1.8</java.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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--springboot集成dubbo的起步依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--zookeeper client-->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!--dubbo接口依赖-->
<dependency>
<groupId>com.cx.springboot</groupId>
<artifactId>01-springboot-dubbo-interface</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
#WEB服务端口
server.port=8080
spring.dubbo.application.name=springboot-dubbo.consumer
#zookeeper注册中心
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
com.cx.springboot.dubbo.provider.service.impl.UserServiceImpl
@Component//注册为spring的bean -org.springframework.stereotype.Component
@Service//dubbo注解 -com.alibaba.dubbo.config.annotation.Service
public class UserServiceImpl implements UserService {
@Override
public String sayHi(String name) {
return "Hi " + name;
}
@Override
public User getUser(int id) {
User user = new User();
user.setId(id);
user.setName("IU");
user.setSex("gril");
return user;
}
}
启动类Application
@SpringBootApplication
@EnableDubboConfiguration //开启dubbo自动配置
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
3.consumer
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cx.springboot</groupId>
<artifactId>03-springboot-dubbo-cosumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>03-springboot-dubbo-cosumer</name>
<description>Project for Spring Boot</description>
<properties>
<java.version>1.8</java.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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--springboot集成dubbo的起步依赖-->
<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.10</version>
</dependency>
<!--dubbo接口依赖-->
<dependency>
<groupId>com.cx.springboot</groupId>
<artifactId>01-springboot-dubbo-interface</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
#WEB服务端口
server.port=9090
spring.dubbo.application.name=springboot-dubbo.consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
com.cx.springboot.dubbo.controller.UserController
@RestController
public class UserController {
//dubbo注解 -com.alibaba.dubbo.config.annotation.Reference
@Reference
private UserService userService;
@GetMapping("/dubbo/hi")
public String sayHi(String name) {
return userService.sayHi(name);
}
@GetMapping("/dubbo/user")
public User getUser(int id) {
return userService.getUser(id);
}
}
启动类Application
@SpringBootApplication
@EnableDubboConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
启动provider
启动consumer
访问
http://localhost:9090/dubbo/hi?name=aaa
http://localhost:9090/dubbo/user?id=100
------------------------------------------------------------------------------------
windows下zookeeper启动连接不了
修改bin下zkEnv.cmd
其中%JAVA_HOME%的双引号,修改如下
if not exist "%JAVA_HOME%\bin\java.exe" (
echo Error: JAVA_HOME is incorrectly set.
goto :eof
)
set JAVA="%JAVA_HOME%\bin\java"
------------------------------------------------------------------------------------
zookeeper占用8080端口,修改zookeeper配置文件zoo.cfg,添加
admin.serverPort=8088