3.Dubbo在spring中使用(注解版)

三.注解版

此处仍以配置文件版的三个工程为例

1.provider工程

1-1 UserServiceImpl
//@Service
//@com.alibaba.dubbo.config.annotation.Service
@Component
@Service
public class UserServiceImpl implements UserService {
    @Override
    public User findUser() {
        User user = new User();
        user.setId(1);
        user.setUsername("admin");
        user.setPassword("123456");
        user.setPhone("13812345678");
        user.setAddress("江苏-南京");
        return user;
    }
}
1-2 配置文件
<?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://dubbo.apache.org/schema/dubbo"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <!--
        配置当前提供方的应用名,用于暴露给注册中心
        该名字可以随便写,但是不能重复,具有唯一性
        一般情况下:使用当前的功能模块名
    -->
    <dubbo:application name="dubbo-provider"  />

    <!--
        配置注册中心,此处使用Zookeeper作为注册中心
        其address表示需要连接的地址,其前缀为当前的注册中心的名字
        后面为注册中心的服务器的ip地址与端口号
    -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!--
        用dubbo协议在8888端口暴露服务
        配置dubbo的协议与端口,通过指定的端口提供服务
     -->
    <dubbo:protocol name="dubbo" port="8888" />

    <!-- 注解版 -->
    <dubbo:annotation package="com.itany.dubbo.service"/>
    <context:component-scan base-package="com.itany.dubbo.service.impl"/>
</beans>

2.consumer工程

2-1 UserController
@Controller
public class UserController {

    // 此处调用的是提供者暴露的接口
    // 而不再是由Spring提供的bean
    // 因此,此处不能使用@Autowire
    // 使用dubbo提供的注解@Reference
    // 此处Reference导包不要出错
    // com.alibaba.dubbo.config.annotation.Reference
    @Reference
    private UserService userService;

    public void findUser(){
        System.out.println("userService:"+userService);
        User user = userService.findUser();
        System.out.println("user:"+user);
    }
}
2-2 配置文件
<?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://dubbo.apache.org/schema/dubbo"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

    <dubbo:application name="dubbo-consumer"  />

    <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!-- 注解版 -->
    <dubbo:annotation package="com.itany.dubbo.controller"/>
    <context:component-scan base-package="com.itany.dubbo.controller"/>

</beans>
3.测试
  • 启动注册中心

    • 此处使用的是Zookeeper作为注册中心
  • 启动提供者

    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:provider.xml");
        System.out.println("ac:"+ac);
    
        // 由于提供者的服务必须一致处于启动状态
        // 此处方法不能停止,模拟一个过程
        new Scanner(System.in).next();
    }
    
  • 启动消费者

    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:consumer.xml");
        UserController userController = (UserController) ac.getBean("userController");
        userController.findUser();
    }
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值