Dubbo入门(四)Provider和Consumer的注解实现

前言

本章讲解使用注解配置Provider和Consumer的步骤

方法

1.概念

在当今注解化配置盛行的趋势下,Dubbo也作出了改变,适应了注解的配置方式。

注意:需要 Dubbo 2.6.3及以上版本支持

2.Provider配置思路

1)创建provider的dubbo配置文件

内容如下:

# dubbo-provider.properties
dubbo.application.name=demo-provider
dubbo.registry.address=zookeeper://192.168.1.106:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

这其中的配置与我们xml文件中的配置一致。

2)创建provider配置类

package cn.edu.ccut.dubbo;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@Configuration
@EnableDubbo(scanBasePackages = "cn.edu.ccut.dubbo")//允许该包下使用dubbo注解
@PropertySource("classpath:dubbo-provider.properties")//加载dubbo配置文件
public class ProviderConfig {

}

由于我们使用了PropertySource注解,需要在pom文件中引入如下依赖:

<dependency>
    <groupId>com.alibaba.spring</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>1.0.2</version>
</dependency>

3)修改Provider启动类

package cn.edu.ccut.dubbo;

import java.io.IOException;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Test {

	public static void main(String[] args) throws IOException {
		AnnotationConfigApplicationContext  context = new AnnotationConfigApplicationContext (ProviderConfig.class);
        context.start();
        System.out.println("Provider started...");
        System.in.read();
	}

}

4)修改实现类

package cn.edu.ccut.dubbo;

import com.alibaba.dubbo.config.annotation.Service;

import cn.edu.ccut.dubbo.DemoService;

@Service
public class DemoServiceImpl implements DemoService {

	@Override
	public String getString(String str) {
		// TODO Auto-generated method stub
		return "指定的字符串为:"+str;
	}

}

注意:实现类加入的注解为dubbo的Service注解,并不是Spring的注解!

启动Provider:

3.Consumer配置思路

1)创建consumerr的dubbo配置文件

内容如下:

# dubbo-consumer.properties
dubbo.application.name=annotation-consumer
dubbo.registry.address=zookeeper://192.168.1.106:2181
dubbo.consumer.timeout=3000

2)创建consumer配置类

package cn.edu.ccut.dubbo;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@Configuration
@EnableDubbo(scanBasePackages = "cn.edu.ccut.dubbo")//允许该包下使用dubbo注解
@PropertySource("classpath:dubbo-consumer.properties")//加载dubbo配置文件
@ComponentScan(value = {"cn.edu.ccut.dubbo"})//Spring注解扫描
public class ConsumerConfig {

}

由于我们使用了PropertySource注解,需要在pom文件中引入如下依赖:

<dependency>
    <groupId>com.alibaba.spring</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>1.0.2</version>
</dependency>

3)配置一个类AnnotationAction,用它来引用我们的DemoService

package cn.edu.ccut.dubbo;

import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Reference;

@Component("annotationAction")
public class AnnotationAction {

    @Reference
    private DemoService demoService;
    
    public String doSayMsg(String name) {
        return demoService.getString(name);
    }
}

其中的@Reference注解表示将注册中心暴露的接口注入

4)修改Consumer启动类

package cn.edu.ccut.dubbo;

import java.io.IOException;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Test {

	public static void main(String[] args) throws IOException {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfig.class);
		//调用接口方法
		AnnotationAction action = context.getBean("annotationAction",AnnotationAction.class);
		System.out.println(action.doSayMsg("略略略"));
	}

}

启动之前,我们需要确保Provider正常启动

观察效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值