1.provider
import com.alibaba.dubbo.config.annotation.Service; import facade.EchoService; import com.alibaba.dubbo.rpc.RpcContext; import java.text.SimpleDateFormat; import java.util.Date; @Service public class EchoServiceImpl implements EchoService { public String echo(String message) { String now=new SimpleDateFormat("HH:mm:ss").format(new Date()); System.out.println("["+now+"] Hello"+message+", request from consumer"+RpcContext.getContext().getRemoteAddressString()); return message; } }
配置类:
import com.alibaba.dubbo.config.ApplicationConfig; import com.alibaba.dubbo.config.ProtocolConfig; import com.alibaba.dubbo.config.ProviderConfig; import com.alibaba.dubbo.config.RegistryConfig; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.io.IOException; public class AnnotationProvider { public static void main(String[] args) throws IOException { AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(ProviderConfiguration.class); context.start(); System.in.read(); } @Configuration @EnableDubbo(scanBasePackages="provider") static class ProviderConfiguration{ @Bean public ProviderConfig providerConfig(){ return new ProviderConfig(); } @Bean public ApplicationConfig applicationConfig(){ ApplicationConfig applicationConfig=new ApplicationConfig(); applicationConfig.setName("echo-annotation-provider"); return applicationConfig; } @Bean public RegistryConfig registryConfig(){ RegistryConfig registryConfig=new RegistryConfig(); registryConfig.setProtocol("zookeeper"); registryConfig.setAddress("localhost"); registryConfig.setPort(2181); return registryConfig; } @Bean public ProtocolConfig protocolConfig(){ ProtocolConfig protocolConfig=new ProtocolConfig(); protocolConfig.setName("dubbo"); protocolConfig.setPort(20880); return protocolConfig; } } }
start:
2.同样的consumer:
import com.alibaba.dubbo.config.annotation.Reference; import facade.EchoService; import org.springframework.stereotype.Component; @Component public class EchoConsumerBasedAnnotation { @Reference private EchoService echoService; public String echo(String name){ return echoService.echo(name); } }
import com.alibaba.dubbo.config.ApplicationConfig; import com.alibaba.dubbo.config.ConsumerConfig; import com.alibaba.dubbo.config.RegistryConfig; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import java.io.IOException; public class AnnotationConsuner { public static void main(String[] args) throws IOException { AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(ConsumerConfiguration.class); context.start(); EchoConsumerBasedAnnotation echoService=context.getBean(EchoConsumerBasedAnnotation.class); String hello=echoService.echo("hello world"); System.out.println("result:"+hello); System.in.read(); } @Configuration @EnableDubbo(scanBasePackages = "api") @ComponentScan("api") static class ConsumerConfiguration{ @Bean public ApplicationConfig applicationConfig(){ ApplicationConfig applicationConfig=new ApplicationConfig(); applicationConfig.setName("echo-annotation-consumer"); return applicationConfig; } @Bean public ConsumerConfig consumerConfig(){ return new ConsumerConfig(); } @Bean public RegistryConfig registryConfig(){ RegistryConfig registryConfig=new RegistryConfig(); registryConfig.setProtocol("zookeeper"); registryConfig.setAddress("localhost"); registryConfig.setPort(2181); return registryConfig; } } }