创建新项目
-
我们使用maven的空项目,不用任何模板直接创建
image.png
-
输入项目信息
image.png
-
idea会自动去掉横线,自己加上
image.png
-
在项目中新建空Maven的module如下:
image.png
-
父项目依赖文件:使用dependencyManagement做依赖管理
<?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>io.ilss.dubbo</groupId>
<artifactId>spring-boot-dubbo-ilss</artifactId>
<version>1.0</version>
<modules>
<module>ilss-provider</module>
<module>ilss-service</module>
<module>ilss-consumer</module>
</modules>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
<spring-boot.version>2.0.3.RELEASE</spring-boot.version>
<dubbo-boot.version>0.2.0</dubbo-boot.version>
<mybatis-boot.version>2.0.0</mybatis-boot.version>
<druid.version>1.1.10</druid.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Dubbo -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo-boot.version}</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-boot.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- dubbo官方提供的repository -->
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
Provider配置
- provider的依赖
<?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">
<parent>
<artifactId>spring-boot-dubbo-ilss</artifactId>
<groupId>io.ilss.dubbo</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ilss-provider</artifactId>
<dependencies>
<!-- 本地模块依赖 -->
<dependency>
<groupId>io.ilss.dubbo</groupId>
<artifactId>ilss-service</artifactId>
<version>1.0</version>
</dependency>
<!-- 框架依赖 -->
<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.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
- provider的yml配置文件
spring:
application:
name: ilss-provider
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/xxx?useSSL=false
username: root
password: xxx
mybatis:
mapperLocations: classpath:mapper/*.xml
dubbo:
registry:
protocol: zookeeper
address: 127.0.0.1:2181
id: registry-1
protocol:
port: 20888
name: dubbo
id: dubbo
status: server
application:
name: ilss-provider
id: ilss-provider
scan:
basePackages: io.ilss.dubbo.service.impl
provider:
version: 1.0
- provider的启动类
package io.ilss.dubbo;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
/**
* className IlssProviderApplication
* description IlssProviderApplication
*
* @author feng
* @version 1.0
* @date 2019-01-30 18:08
*/
@SpringBootApplication
public class IlssProviderApplication {
public static void main(String[] args) {
//由于Provider不需要web服务,所以我们使用new SpringApplicationBuilder时web指定NONE
new SpringApplicationBuilder(IlssProviderApplication.class).web(WebApplicationType.NONE).run(args);
}
}
Consumer配置
- consumer依赖
<?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">
<parent>
<artifactId>spring-boot-dubbo-ilss</artifactId>
<groupId>io.ilss.dubbo</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ilss-consumer</artifactId>
<dependencies>
<dependency>
<groupId>io.ilss.dubbo</groupId>
<artifactId>ilss-service</artifactId>
<version>1.0</version>
</dependency>
<!-- 框架依赖 -->
<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>
<!-- dubbo -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<!-- boot-web 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
- consumer的yml配置文件
server:
port: 8080
dubbo:
application:
id: ilss-consumer
name: ilss-consumer
registry:
protocol: zookeeper
address: 127.0.0.1:2181
id: registry-1
protocol:
name: dubbo
port: 20889
consumer:
version: 1.0
spring:
application:
name: ilss-consumer
- consumer的启动类
package io.ilss.dubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* className IlssConsumerApplication
* description IlssConsumerApplication
*
* @author feng
* @version 1.0
* @date 2019-01-30 18:18
*/
@SpringBootApplication
public class IlssConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(IlssConsumerApplication.class);
}
}
服务实现
-
service接口:在service中新建interface TestService
TestService
代码如下:
package io.ilss.dubbo.service;
/**
* className TestService
* description TestService
*
* @author feng
* @version 1.0
* @date 2019-01-30 18:07
*/
public interface TestService {
String test(String text);
}
-
在provider中新建ServiceImpl
ServiceImpl
代码如下:
package io.ilss.dubbo.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import io.ilss.dubbo.service.TestService;
/**
* className TestServiceImpl
* description TestServiceImpl
*
* @author feng
* @version 1.0
* @date 2019-01-30 18:08
*/
@Service(
version = "${dubbo.provider.version}",
application = "${dubbo.application.id}",
protocol = "${dubbo.protocol.id}",
registry = "${dubbo.registry.id}"
)
public class TestServiceImpl implements TestService {
@Override
public String test(String text) {
return "Success! Your String is " + text;
}
}
- Consumer中添加测试的TestController
package io.ilss.dubbo.web;
import com.alibaba.dubbo.config.annotation.Reference;
import io.ilss.dubbo.service.TestService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* className TestController
* description TestController
*
* @author feng
* @version 1.0
* @date 2019-01-30 18:19
*/
@RestController
public class TestController {
private static final Logger logger = LoggerFactory.getLogger(TestController.class);
@Reference
private TestService testService;
@GetMapping("/test")
public String test(@RequestParam String text) {
logger.info("text value : {}",text);
return testService.test(text);
}
}
-
完整结构
Project Structure
-
运行
- 启动Zookeeper端口为2181,怎么安装启动自行Google
- 启动IlssProviderApplication
- 启动IlssConsumerApplication
- 游览器访问http://localhost:8080/test?text=abc 看到如下页面和log即完成
![](https://img.haomeiwen.com/i14200547/fdb7df945199b4dd.png)
![](https://img.haomeiwen.com/i14200547/870f4bbbc3ecf9e0.png)
网友评论