Spring boot配置Dubbo三種方式


方式一
使用注解的方式

導入dubbo-starter
在application.properties配置屬性

使用@Service暴露服務
使用@Reference引用服務

使用@EnableDubbo開啟注解Dubbo功能
或者配置包掃描

dubbo.scan.base-packages=com.atguigu.gmall
1
開啟注解、包掃描,配置一個即可

這種方式
可以在@Service、@Reference注解中配置屬性
屬於類的配置,無法精確到方法的配置

方式二
使用dubbo的xml配置文件

導入dubbo-starter
使用@ImportResource導入dubbo的配置文件即可

@ImportResource(locations="classpath:provider.xml")
1
dubbo的配置文件,之前怎么寫
現在還是怎么寫,沒有特殊要求

這種方式
可以做到方法的精確配置

方式三
使用注解API的方式

將每一個組件手動創建到容器中
讓dubbo來掃描其他的組件

參考文檔
http://dubbo.apache.org/zh-cn/docs/user/configuration/annotation.html

配置類示例

package com.atguigu.gmall.config;

import java.util.ArrayList;
import java.util.List;

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

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.MethodConfig;
import com.alibaba.dubbo.config.MonitorConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.ProviderConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import com.atguigu.gmall.service.UserService;

@Configuration
public class MyDubboConfig {

    //<dubbo:application name="boot-user-service-provider"></dubbo:application>
    @Bean
    public ApplicationConfig applicationConfig() {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("boot-user-service-provider");
        return applicationConfig;
    }

    //<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry>
    @Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setProtocol("zookeeper");
        registryConfig.setAddress("127.0.0.1:2181");
        return registryConfig;
    }

    //<dubbo:protocol name="dubbo" port="20882"></dubbo:protocol>
    @Bean
    public ProtocolConfig protocolConfig() {
        ProtocolConfig protocolConfig = new ProtocolConfig();
        protocolConfig.setName("dubbo");
        protocolConfig.setPort(20882);
        return protocolConfig;
    }

    /**
     *<dubbo:service interface="com.atguigu.gmall.service.UserService"
        ref="userServiceImpl01" timeout="1000" version="1.0.0">
        <dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
    </dubbo:service>
     */
    @Bean
    public ServiceConfig<UserService> userServiceConfig(UserService userService){
        ServiceConfig<UserService> serviceConfig = new ServiceConfig<>();
        serviceConfig.setInterface(UserService.class);
        serviceConfig.setRef(userService);
        serviceConfig.setVersion("1.0.0");

        //配置每一個method的信息
        MethodConfig methodConfig = new MethodConfig();
        methodConfig.setName("getUserAddressList");
        methodConfig.setTimeout(1000);

        //將method的設置關聯到service配置中
        List<MethodConfig> methods = new ArrayList<>();
        methods.add(methodConfig);
        serviceConfig.setMethods(methods);

        //ProviderConfig
        //MonitorConfig

        return serviceConfig;
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
配置包掃描路徑

可以,使用@DubboComponentScan注解
也可以,使用@EnableDubbo注解

@EnableDubbo注解
其實,里面配置的就是@DubboComponentScan注解


掃描包路徑

@EnableDubbo(scanBasePackages="com.atguigu.gmall")
1
或者

@DubboComponentScan(basePackages ="com.atguigu.gmall")
1
生產者、消費者
使用@Service、@Reference注解配置

轉自 https://blog.csdn.net/nangeali/article/details/82527039


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM