dubbo配置方式(下)


记上篇学习,我们了解到了dubbo的xml配置文件配置方式。接下来我们继续介绍dubbo的其他的集中配置方式。


Properties配置方式

        DUBBO 在读取配置的时候会先读取 XML文件中的配置,如果没找到就会默认去读取resources目录下的 dubbo.properties 文件。而 dubbo.properties 的配置方式与 XML配置方式一样,只不过是换了种写法而已。要换成 dubbo.properties 配置,你只需把 spring-provider.xml 里关于 application、registry、protocol 里的配置注释掉,然后加上对应的 dubbo.properties 文件即可。上面例子的 spring-provider.xml 换成 properties 文件的写法是这样的:

# 应用名
dubbo.application.name=dubbodemo-provider
# 注册中心地址
dubbo.registry.address=zookeeper://localhost:2181
# 调用协议地址
dubbo.protocol.name=dubbo
dubbo.protocol.port=28080


spring-consumer.xml 换成 properties 文件写法是这样的:

# 应用名
dubbo.application.name = dubbodemo-consumer
# 注册中心地址
dubbo.registry.address = zookeeper://localhost:2181
# 调用协议地址
dubbo.protocol.name = dubbo
dubbo.protocol.port = 28080

此时 spring-provider.xml 和 spring-consumer.xml 文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 添加 DUBBO SCHEMA -->
<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:service timeout="3000" interface="com.chanshuyi.service.IUserService" ref="userService"/> 
</beans>



<?xml version="1.0" encoding="UTF-8"?>
<!-- 添加 DUBBO SCHEMA -->
<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:reference id="userService" interface="com.chanshuyi.service.IUserService"/>
</beans>

       注意,如果你即配置了 XML 又配置了 properties 的内容,那么 DUBBO 读取时将直接读取 XML 中的配置,忽略 properties 里的配置。
       一般情况下 properties 都是用来配置一些公共的信息,比如可能一个应用需要调用多个注册中心的服务,这时候它们的 application.name、dubbo.protocol.name等都是相同的,那么你可以用 properties 来配置这些公共信息。其他情况,还是建议用 XML 配置方式。

annotation配置方式

annotation 配置方式其实是在 XML 配置方式上,将暴露服务和调用服务与 Spring 深度结合起来。

Provider方配置:

将<dubbo:service>  节点换成 <dubbo:annotation> 节点:

<dubbo:annotation package="com.lwz.service.impl" />

其中 package 表示要扫描的包。之后在实现类里加上注解 @Service(version ="1.0.0") :

package com.lwz.service.impl;

import com.lwz.service.IUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dubbo.config.annotation.Service;

@Service(version = "1.0.0")
public class UserServiceImpl implements IUserService {

    @Override
    public boolean login(String username, String password) {
        ……
    }
}
注意,dubbo更新版本以后,这个版本信息version已经可以没有了, @Service 注解是 alibaba.dubbo 中的 Service 注解。


Consumer方配置:

将<dubbo:reference>  节点换成 <dubbo:annotation> 节点:

<!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->

< dubbo:annotation package ="com.chanshuyi" />   

@Component
public class UserServiceConsumer {

    private static Logger logger = LoggerFactory.getLogger(UserServiceConsumer.class);

    @Reference(version="1.0.0")
    static IUserService userService;

    public static void main(String args[]) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 
        logger.info("执行结果:" + userService.login("hello", "hello"));
    }
}


之后启动 provider服务,运行 UserServiceConsumer.main() 方法测试即可获得结果。


还有一种Dubbo API的使用方式,这里就不在累述了,也是十分简单



猜你喜欢

转载自blog.csdn.net/u013045878/article/details/77340910