1.项目架构
1.创建一个公共要用的父项目(公用的依赖,其子项目就不需要在此引入依赖)
我此处创建的是父项目名称是: common
- 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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.feng.common</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>common</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</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>1.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.11</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>
<modules>
<module>../myapi</module>
<module>../provide</module>
<module>../custom</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.provide(提供者)
- pom.xml(只需表明父项目以及添加web依赖)
<?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>
<parent>
<groupId>com.feng.common</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.feng.provider</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>provider</name>
<description>Demo 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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 项目架构
- UserSservice:
package com.feng.dubbo.service;
public interface UserService {
public String getProvide();
}
- UserServiceImpl
package com.feng.dubbo.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.feng.dubbo.service.UserService;
//注册到zoockker上去
@Service
@org.springframework.stereotype.Service
public class UserServiceImpl implements UserService {
@Override
public String getProvide() {
return "我是提供者";
}
}
- application.yml
spring:
dubbo:
appname: provider
registry: zookeeper://192.168.130.128:2181
protocol: dubbo
port: 20880
server:
port: 8081
- CustomApplication.java(启动类)
package com.feng.dubbo;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
//启动dubbo配置
@EnableDubboConfiguration
public class CustomApplication {
public static void main(String[] args) {
SpringApplication.run(CustomApplication.class, args);
}
}
3.custom(consumer消费者,我这里英文打错)
-
pom.xml文件什么都不需要
-
src/main目录结构只需与provide的接口一致即可其它都不需要
4.myapi -
pom.xml
<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>
<parent>
<groupId>com.feng.common</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.feng.dubbo</groupId>
<artifactId>myapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>myapi</name>
<description>Demo 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>
<!--引入消费者custom这个项目-->
<dependency>
<groupId>com.feng.custom</groupId>
<artifactId>custom</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
-
项目架构
-
application.ynl
spring:
dubbo:
appname: consumer
registry: zookeeper://192.168.130.128:2181
protocol: dubbo
port: 20880
server:
port: 8888
MyapiApplication.java(启动类)
package com.feng.dubbo.myapi;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
//启动dubbo配置
@EnableDubboConfiguration
public class MyapiApplication {
public static void main(String[] args) {
SpringApplication.run(MyapiApplication.class, args);
}
}
UserController
package com.feng.dubbo.myapi.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.feng.dubbo.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.net.URI;
@RestController
public class UserController {
@Reference //com.alibaba.dubbo.config.annotation.Reference; 不要导错
UserService userService; //相当于是provide的service了
@RequestMapping("/test")
public String testDubbo() {
return userService.getProvide();
}
}