本地提供/调用服务(spring)
<bean id="demoService" class="com.demo.DemoServiceImpl" />
<bean id="demoAction" class="com.action.DemoAction">
<property id="demoService" ref="demoService" />
</bean>
其中,id为demoService的bean是真实的的服务提供者,并且把此服务提供者bean作为参数,传递给id为demoAction的bean,此bean为服务的消费者。
远程提供/调用服务(spring,dubbo)
#服务提供者
<!-- 和本地提供服务一样提供远程服务 -->
<bean id="demoService" class="com.demo.DemoServiceImpl" />
<!-- 增加暴露远程服务配置 -->
<dubbo:service interface="com.demo.DemoService" ref="demoService" />
其中,com.demo.DemoService
是com.demo.DemoServiceImpl
的接口;
#服务调用者
<!-- 增加引用远程服务配置 -->
<dubbo:reference id="demoService" interface="com.demo.DemoService" />
<!-- 和本地调用服务一样消费服务 -->
<bean id="demoAction" class="com.action.DemoAction">
<property id="demoService" ref="demoService" />
</bean>
也就是说,远程提供/调用服务与本地提供/调用服务相比:
1. 服务的提供与服务的调用不是在本地,可能是在不同的机器上;
2. 对于服务提供方而言,提供服务的方式不变,仅仅是使用<dubbo:service>
将服务暴露给远程;
3. 对于服务消费者而言,消费服务的方式不变,仅仅是使用<dubbo:reference>
来引用其他地方报漏出来的远程服务;
4. 因此,服务的提供者可以向在本地提供服务一样提供远程服务,消费者可以向在本地消费服务一样消费远程服务;