Dubbo学习笔记2-配置

1. API配置

1.1定义接口

定义一个服务接口,并将接口打包提供给“服务提供者”和“服务消费者”使用,代码如下

package org.dubbo.api;
public interface UserService {
	public String sayHello(String name);
}

1.2服务提供者

1) 导入必须的jar包,可以通过maven方式。
log4j,slf4j-api,slf4j-log4j12,dubbo,zkclient。
2) 定义一个服务类,实现服务接口UserService,代码如下。


package org.dubbo.provider.api;
import java.io.IOException;
import org.dubbo.api.UserService;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
public class UserServiceApiImpl implements UserService {
	@Override
	public String sayHello(String name) {
		return "Hello "+name+" , This is Api method!";
	}
	public static void main(String[] args) throws IOException {
		ApplicationConfig application = new ApplicationConfig();
		application.setName("userServiceApiProvider");
		
		RegistryConfig registry = new RegistryConfig();
		registry.setAddress("127.0.0.1:2181");
		registry.setProtocol("zookeeper");
		
		ProtocolConfig protocol = new ProtocolConfig();
		protocol.setName("dubbo");
		protocol.setPort(20880);
		
	ServiceConfig<UserService> services = new ServiceConfig<UserService>();
		services.setApplication(application);
		services.setRegistry(registry);
		services.setProtocol(protocol);
		services.setInterface(UserService.class);
		services.setRef(new UserServiceApiImpl());

		services.export();
		System.out.println("Api provider start...");
		System.in.read();
	}
}

3) 启动,前提必须先启动zookeeper。

1.3 服务消费者

1) 导入必须的jar包,可以通过maven方式。
log4j,slf4j-api,slf4j-log4j12,dubbo,zkclient。
2) 书写消费端代码如下:

package org.dubbo.consumer.api;
import org.dubbo.api.UserService;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ReferenceConfig;
import com.alibaba.dubbo.config.RegistryConfig;
public class ApiConsumer {
	public static void main(String[] args) {
		ApplicationConfig application = new ApplicationConfig();
		application.setName("userServiceApiConsumer");
		
		RegistryConfig registry = new RegistryConfig();
		registry.setAddress("127.0.0.1:2181");
		registry.setProtocol("zookeeper");
		
ReferenceConfig<UserService> references = new ReferenceConfig<UserService>();
		references.setApplication(application);
		references.setRegistry(registry);
		references.setInterface(UserService.class);
		
		UserService service = references.get();
		System.out.println(service.sayHello("ApiConsumer"));
	}
}

3) 启动消费,得到结果。

2.XML配置

2.1 定义接口

定义一个服务接口,并将接口打包提供给“服务提供者”和“服务消费者”使用,代码如下

package org.dubbo.api;
public interface UserService {
	public String sayHello(String name);
}

2.2 服务提供者

1) 导入必须的jar包,可以通过maven方式。
spring-core,spring-aop,spring-context-support,log4j,slf4j-api,slf4j-log4j12,dubbo,zkclient
2) 定义一个服务类,实现服务接口UserService,代码如下

package org.dubbo.provider.xml;
import java.io.IOException;
import org.dubbo.api.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserServiceXmlImpl implements UserService {
	@Override
	public String sayHello(String name) {
		return "Hello "+name+" , This is XML method";
	}	
	public static void main(String[] args) throws IOException {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:provider.xml");
        System.out.println(context.getDisplayName() + ": here");
        context.start();
        System.out.println("Xml Provider start...");
        System.in.read();
        context.close();
	}
}

3) 使用spring的xml配置dubbo,配置文件如下。

<?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-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="userServiceXmlProvider" owner="linwu" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!--使用 dubbo 协议实现定义好的 org.dubbo.api.UserService 接口-->
    <dubbo:service interface="org.dubbo.api.UserService" ref="demoService" protocol="dubbo" />
    <!--具体实现该接口的 bean-->
    <bean id="demoService" class="org.dubbo.provider.xml.UserServiceXmlImpl"/>
</beans>

4) 启动,前提必须先启动zookeeper。

2.3 服务消费者

1) 导入必须的jar包,可以通过maven方式。
spring-core,spring-aop,spring-context-support,log4j,slf4j-api,slf4j-log4j12,dubbo,zkclient
2) 书写消费端代码如下:

package org.dubbo.consumer.xml;
import org.dubbo.api.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class XmlConsumer {

	public static void main(String[] args) {
		//测试常规服务
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("consumer.xml");
        context.start();
        System.out.println("consumer start");
        UserService service = (UserService) context.getBean("xmlService");
        System.out.println("consumer");
        System.out.println(service.sayHello("XmlConsumer"));
        context.close();
	}
}

3) 使用spring的xml配置dubbo,配置文件如下。

<?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-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="userServiceXmlConsumer" owner="linwu" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!--使用 dubbo 协议调用定义好的 org.dubbo.api.UserService 接口-->
    <dubbo:reference id="xmlService" interface="org.dubbo.api.UserService"/>
</beans>

4) 启动消费,得到结果。

3. 注解配置

3.1 定义接口

定义一个服务接口,并将接口打包提供给“服务提供者”和“服务消费者”使用,代码如下

package org.dubbo.api;
public interface UserService {
	public String sayHello(String name);
}

3.2 服务提供者

1) 导入必须的jar包,可以通过maven方式。
spring-core,spring-aop,spring-context-support,log4j,slf4j-api,slf4j-log4j12,dubbo,zkclient
2) 定义一个服务类,继承服务接口,并做注解,代码如下:

package org.dubbo.provider.annotation;
import java.io.IOException;
import org.dubbo.api.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.dubbo.config.annotation.Service;
@Service
public class UserServiceAnnotationImpl implements UserService {
	@Override
	public String sayHello(String name) {
		return "Hello "+name+" , This is Annotation method";
	}
	public static void main(String[] args) throws IOException {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:annotation-provider.xml");
        System.out.println(context.getDisplayName() + ": here");
        context.start();
        System.out.println("Annotation Provider start...");
        System.in.read();
        context.close();
	}
}

3) 使用spring的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-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="userServiceAnnotationProvider" owner="linwu" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
	<dubbo:annotation package="org.dubbo.provider.annotation" />
</beans>

4) 启动,前提必须先启动zookeeper。

3.3 服务消费者

1) 导入必须的jar包,可以通过maven方式。
spring-core,spring-aop,spring-context-support,log4j,slf4j-api,slf4j-log4j12,dubbo,zkclient
2) 书写消费端代码如下:

package org.dubbo.consumer.annotation;
import org.dubbo.api.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Reference;
@Component
public class AnnotationConsumer {
		@Reference
	private UserService userService;
	public UserService getUserService() {
		return userService;
	}
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
	public static void main(String[] args) {
		//测试常规服务
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("annotation-consumer.xml");
        context.start();
        System.out.println("consumer start");
        AnnotationConsumer annotationConsumer = (AnnotationConsumer) context.getBean("annotationConsumer");
        System.out.println("consumer");
        System.out.println(annotationConsumer.getUserService().sayHello("AnnotationConsumer"));
        context.close();
	}
}

3) 使用spring的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-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="userServiceXmlConsumer" owner="linwu" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
	<dubbo:annotation package="org.dubbo.consumer.annotation" />
</beans>

4) 启动消费,得到结果。

4. 属性配置

定义接口
服务提供者
服务消费者

5. 配置顺序

1) 方法配置>接口配置>全局配置
2) 如果级别一样,则消费方>服务方
3) JVM的-D设置>XML配置>properties配置

猜你喜欢

转载自blog.csdn.net/linwu_2006_2006/article/details/95194505