1.架構


2.提供者配置
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--指定當前服務的名字,不要與別的服務同名-->
<dubbo:application name="dubbo-server-provider"/>
<!--指定注冊中心位置-->
<dubbo:registry address="zookeeper://192.168.10.132:2181"/>
<!--指定通信規則(協議/端口)-->
<dubbo:protocol name="dubbo" port="10000"/>
<!--暴露服務 ref:指向服務真正的實現對象-->
<dubbo:service interface="com.wj.UserService" ref="userServiceImpl"/>
<!--服務實現-->
<bean id="userServiceImpl" class="com.wj.service.impl.UserServiceImpl"/>
</beans>
service實現:
注意實體類需要實現Serializable接口,否則會報錯,因為遠程調用過程有序列化和反序列化過程。
public class UserServiceImpl implements UserService {
@Override
public List<User> getAll() {
User user1 = new User(1, "張三", 12, "北京");
User user2 = new User(2, "李四", 13, "北京");
return Arrays.asList(user1, user2);
}
}
Main方法:
public class ProviderMain {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
context.start();
System.in.read();
}
}
3.消費方配置
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--消費者服務名-->
<dubbo:application name="dubbo-server-consumer"/>
<!--注冊中心地址-->
<dubbo:registry address="zookeeper://192.168.10.132:2181"/>
<!--聲明需要遠程調用的遠程服務接口,生成遠程服務代理-->
<dubbo:reference interface="com.wj.UserService" id="userServiceImpl"/>
<context:component-scan base-package="com.wj"/>
</beans>
消費者類:
@Controller
public class UserController {
@Autowired
UserService userService;
public List<User> getAll(){
return userService.getAll();
}
}
Main方法:
public class ConsumerMain {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserController bean = context.getBean(UserController.class);
List<User> users = bean.getAll();
for (User user : users) {
System.out.println(user);
}
System.in.read();
}
}
4.分別運行兩個main方法
消費方打印結果:

dubbo admin上服務調用關系:

