public interface DependencyService {
public String dependency() throws Exception;
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import bhz.dubbo.dependency.provider.DependencyService;
import bhz.dubbo.sample.provider.SampleService;
@Service("dependencyServiceImpl")
@com.alibaba.dubbo.config.annotation.Service(interfaceClass=com.dubbo.dependency.provider.DependencyService.class, protocol={"dubbo"}, retries=0)
public class DependencyServiceImpl implements DependencyService {
//注入SampleService
@Autowired
private SampleService sampleService;
public String dependency() throws Exception {
//这里 我们可能需要调用SampleService,也可能不需要...
System.out.println(sampleService.sayHello("jack"));
return "dependency exec";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
">
<dubbo:annotation package="com" />
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="dependency-provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://localhost:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20890" />
<!-- 注意这里,我们在使用DependencyService的时候,这个服务可能需要依赖某一个服务,比如SampleService 检查级联依赖关系 默认为true 当有依赖服务的时候,需要根据需求进行设置 -->
<dubbo:reference id="sampleService" check="true"
interface="com.dubbo.sample.provider.SampleService" />
</beans>
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "sample-provider.xml" });
context.start();
System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
}
}
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
public static void main(String[] args) {
try {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "dependency-provider.xml" });
context.start();
System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
} catch (Exception e) {
e.printStackTrace();
}
}
}
import org.springframework.context.support.ClassPathXmlApplicationContext;
import bhz.dubbo.dependency.provider.DependencyService;
public class Consumer {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "dependency-consumer.xml" });
context.start();
DependencyService dependencyService = (DependencyService) context.getBean("dependencyService");
//调用该服务
System.out.println(dependencyService.dependency());
System.in.read();
}
}