Skip to content

Commit

Permalink
dubbo annotation example
Browse files Browse the repository at this point in the history
  • Loading branch information
rhwayfun committed Mar 24, 2018
1 parent 2f0cbd5 commit 9f77b27
Show file tree
Hide file tree
Showing 17 changed files with 354 additions and 2 deletions.
15 changes: 15 additions & 0 deletions spring-boot-dubbo-annotation/dubbo-api/pom.xml
@@ -0,0 +1,15 @@
<?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-annotation</artifactId>
<groupId>com.rhwayfun</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>

</project>
@@ -0,0 +1,11 @@
package com.rhwayfun.springboot.dubbo.annotation.api;

/**
* @author rhwayfun
* @since 0.0.1
*/
public interface DemoProvider {

String sayHello(String name);

}
@@ -0,0 +1,15 @@
package com.rhwayfun.springboot.dubbo.annotation.api;

/**
* @author rhwayfun
* @since 0.0.1
*/
public class DemoProviderMock implements DemoProvider {

@Override
public String sayHello(String name) {
// 容错数据,此方法只在出现RpcException时被执行
return null;
}

}
61 changes: 61 additions & 0 deletions spring-boot-dubbo-annotation/dubbo-consumer/pom.xml
@@ -0,0 +1,61 @@
<?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.rhwayfun</groupId>
<artifactId>spring-boot-dubbo-annotation</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>dubbo-consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>

<dependencies>
<dependency>
<groupId>com.rhwayfun</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>com.rhwayfun</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</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>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,17 @@
package com.rhwayfun.springboot.dubbo.annotation.consumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* @author rhwayfun
* @since 0.0.1
*/
@SpringBootApplication
public class Application {

public static void main(String[] args) throws InterruptedException {
SpringApplication.run(Application.class, args);
Thread.sleep(Long.MAX_VALUE);
}
}
@@ -0,0 +1,11 @@
package com.rhwayfun.springboot.dubbo.annotation.consumer.config;

import org.springframework.context.annotation.Configuration;

/**
* @author rhwayfun
* @since 0.0.1
*/
@Configuration
public class AppConfig {
}
@@ -0,0 +1,23 @@
package com.rhwayfun.springboot.dubbo.annotation.consumer.service;

import com.alibaba.dubbo.config.annotation.Reference;
import com.rhwayfun.springboot.dubbo.annotation.api.DemoProvider;
import org.springframework.stereotype.Component;

/**
* @author rhwayfun
* @since 0.0.1
*/
@Component
public class DemoConsumer {

@Reference(version = "1.0.0",
application = "${dubbo.application.id}",
url = "dubbo://localhost:20880")
private DemoProvider demoProvider;

public String sayHi(String name) {
return demoProvider.sayHello(name);
}

}
@@ -0,0 +1,19 @@
# Spring boot application
spring.application.name=spring-boot-dubbo-annotation-consumer

# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id=spring-boot-dubbo-annotation-consumer
dubbo.application.name=spring-boot-dubbo-annotation-consumer

## ProtocolConfig Bean
dubbo.protocol.id=dubbo
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

# Dubbo Endpoint (default status is disable)
endpoints.dubbo.enabled=true

# Dubbo Health
## StatusChecker Name defaults (default : "memory", "load" )
management.health.dubbo.status.defaults=memory
@@ -0,0 +1,40 @@
package com.rhwayfun.springboot.dubbo.annotation.consumer;

import com.rhwayfun.springboot.dubbo.annotation.consumer.service.DemoConsumer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

/**
* @author rhwayfun
* @since 0.0.1
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class DubboTest {

private static final String PARAM = "Dubbo";

@Resource
private DemoConsumer demoConsumer;

@Test
public void testDubbo() throws Exception {
String result = null;
try {
result = demoConsumer.sayHi(PARAM);
if (result != null) {
assertEquals("Hello " + PARAM, result);
}
} catch (Exception e) {
assertNull(result);
}
}

}
51 changes: 51 additions & 0 deletions spring-boot-dubbo-annotation/dubbo-provider/pom.xml
@@ -0,0 +1,51 @@
<?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.rhwayfun</groupId>
<artifactId>spring-boot-dubbo-annotation</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
<groupId>com.rhwayfun</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</dependency>

<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,17 @@
package com.rhwayfun.springboot.dubbo.annotation;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* @author rhwayfun
* @since 0.0.1
*/
@SpringBootApplication
public class Application {

public static void main(String[] args) throws InterruptedException {
SpringApplication.run(Application.class, args);
Thread.sleep(Long.MAX_VALUE);
}
}
@@ -0,0 +1,11 @@
package com.rhwayfun.springboot.dubbo.annotation.config;

import org.springframework.context.annotation.Configuration;

/**
* @author rhwayfun
* @since 0.0.1
*/
@Configuration
public class AppConfig {
}
@@ -0,0 +1,23 @@
package com.rhwayfun.springboot.dubbo.annotation.provider;

import com.alibaba.dubbo.config.annotation.Service;
import com.rhwayfun.springboot.dubbo.annotation.api.DemoProvider;

/**
* @author rhwayfun
* @since 0.0.1
*/
@Service(
version = "1.0.0",
application = "${dubbo.application.id}",
protocol = "${dubbo.protocol.id}",
registry = "${dubbo.registry.id}"
)
public class DemoProviderImpl implements DemoProvider {

@Override
public String sayHello(String name) {
return "Hello " + name;
}

}
@@ -0,0 +1,20 @@
# Spring boot application
spring.application.name=spring-boot-dubbo-annotation-provider

# Base packages to scan Dubbo Components (e.g., @Service, @Reference)
dubbo.scan.basePackages=com.rhwayfun.springboot.dubbo.annotation.provider

# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id=spring-boot-dubbo-annotation-provider
dubbo.application.name=spring-boot-dubbo-annotation-provider

## ProtocolConfig Bean
dubbo.protocol.id=dubbo
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.protocol.status=server

## RegistryConfig Bean
dubbo.registry.id=my-registry
dubbo.registry.address=N/A
17 changes: 16 additions & 1 deletion spring-boot-dubbo-annotation/pom.xml
Expand Up @@ -2,14 +2,29 @@
<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>
<artifactId>spring-boot-learning-examples</artifactId>
<groupId>com.rhwayfun</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>spring-boot-dubbo-annotation</artifactId>
<packaging>pom</packaging>

<modules>
<module>dubbo-api</module>
<module>dubbo-consumer</module>
<module>dubbo-provider</module>
</modules>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>

0 comments on commit 9f77b27

Please sign in to comment.