dubbo簡單環境搭建
阿新 • • 發佈:2019-01-06
out ide ren lns control XML final version port
簡單環境搭建
搭建工具
jdk1.8+idea+maven+spring
構建多模塊
dubbo_par 父模塊
父模塊中pom.xml引入dubbo坐標
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>
dubbo_api 服務公共接口
實體類 簡單模擬數據庫
public class User implements Serializable { private static final long serialVersionUID = -6267484068304517004L; private Integer userId; private String uname; }
定義服務接口
public interface IUserService {
//通過id 查詢用戶 public User queryUserById(Integer userId); }
dubbo_provider 服務提供方
pom.xml中引入公共服務接口坐標
<!--引入公共接口坐標--> <dependency> <groupId>com.shsxt</groupId> <artifactId>dubbo_demo_api</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
配置provider.xml
<?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" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" 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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--自動掃描--> <context:component-scan base-package="com.xpx.provider"></context:component-scan> <!--dubbo配置--> <!--配置名稱--> <dubbo:application name="dubbo_provider"></dubbo:application> <!--multicast 註冊中心 address="multicast://224.5.6.7:1234" 廣播地址 接受廣播來實現服務註冊--> <dubbo:registry address="multicast://224.5.6.7:1234"></dubbo:registry> <!--配置協議 20880dubbo的默認端口--> <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol> <!--配置註冊服務--> <dubbo:service interface="com.xpx.api.service.IUserService" ref="userServiceImpl"></dubbo:service> </beans>
服務接口實現
@Service public class UserServiceImpl implements IUserService { private Map<Integer,User> users ; public UserServiceImpl() { users = new HashMap<>(); users.put(1,new User(1,"dubbo")); } @Override public User queryUserById(Integer userId) { return users.get(userId); } }
測試提供服務方
public class Publisher { public static void main(String args[]) throws IOException { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml"); context.start(); System.in.read(); } }
dubbo_consumer 消費服務方
pom.xml中引入公共服務接口坐標
<!--引入公共接口坐標--> <dependency> <groupId>com.shsxt</groupId> <artifactId>dubbo_demo_api</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
配置consumer.xml
<?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應用名稱--> <dubbo:application name="dubbo_consumer"></dubbo:application> <!--註冊中心 address="multicast://224.5.6.7:1234" 廣播地址 接受廣播來實現服務註冊--> <dubbo:registry address="multicast://224.5.6.7:1234"></dubbo:registry> <!--配置訂閱的服務--> <dubbo:reference interface="com.xpx.api.service.IUserService" id="userService"></dubbo:reference> <bean class="com.xpx.consumer.controller.UserController" id="userController"> <property name="userService" ref="userService"></property> </bean> </beans>
controller
public class UserController { private UserService userService; // 沒有配置自動掃描用set註入 public void setUserService(UserService userService) { this.userService = userService; } public User querUserById(Integer userId){ return userService.queryUserById(userId); } }
測試
public class TestConsumer { public static void main(String args[]){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("consumer.xml"); UserController userController = (UserController) applicationContext.getBean("userController"); User user = userController.querUserById(1); System.out.println(user); } }
結果成功
User{id=1, uname=‘dubbo‘}
dubbo簡單環境搭建