springboot 基础环境搭建
idea提供新建springboot项目(名字自己随便起,我这里叫springboot_dubbo)
新建子模块(如下图与选择Module后与创建springboot一样)
创建完成后 删除无用的相关的数据后如下图
1. 创建provider
基础工程建好以后开始创建基本配置:
在application.proproperties 加入dubbo相关信息如图:(加入这些配置直观感受就是代码中可以加入dubbo相关的注解)
配置代码:
#项目名
spring.application.name=dubbo-spring-boot-starter
#是否开启dubbo
spring.dubbo.server=true
#注册中心地址,我这里用的zookeeper 也可用其他的
spring.dubbo.registry=zookeeper://localhost:2181
开始创建个接口(这里演示provider与consumer各创建一个相同的,可以将所有接口抽离成一个jar,方便第三方调用是引用):
ServiceAPI
package com.mooc.jiangzh.dubbo.springboot;
public interface ServiceAPI {
String sendMessage(String message);
}
QuickstartServiceImpl
package com.mooc.jiangzh.dubbo.springboot.privoder.quickstart;
import com.alibaba.dubbo.config.annotation.Service;
import com.mooc.jiangzh.dubbo.springboot.ServiceAPI;
import org.springframework.stereotype.Component;
@Component
@Service(interfaceClass = ServiceAPI.class)
public class QuickstartServiceImpl implements ServiceAPI {
@Override
public String sendMessage(String message) {
return "quickstart-provider-message="+message;
}
}
其中
@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
另外扩展
1、@controller 控制器(注入服务)
2、@service 服务(注入dao)
3、@repository dao(实现dao访问)
4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)
@Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理。
注意:刚才代码中引入的service并不是spring的,而是dubbo的service注解,作用是暴露service接口,注册到注册中心,便于consumer找到服务。
配置启动类:
PrivoderApplication
package com.mooc.jiangzh.dubbo.springboot.privoder;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubboConfiguration
public class PrivoderApplication {
public static void main(String[] args) {
SpringApplication.run(PrivoderApplication.class, args);
}
}
启动类中加入 @EnableDubboConfiguration注解表示启动的是后加载配置dubbo相关的组件。
1. 创建consumer
引入配置,创建接口与provider都一样,
介绍一下consumer的实现:
package com.mooc.jiangzh.dubbo.springboot.consumer.quickstart;
import com.alibaba.dubbo.config.annotation.Reference;
import com.mooc.jiangzh.dubbo.springboot.ServiceAPI;
import org.springframework.stereotype.Component;
@Component
public class QuickstartConsumer {
@Reference(interfaceClass = ServiceAPI.class)
ServiceAPI serviceAPI;
public void sendMessage(String message){
System.out.println(serviceAPI.sendMessage(message));
}
}
其中 @Reference(interfaceClass = ServiceAPI.class) 是引入服务,表示dubbo 从注册中心去发现名叫ServiceAPI的服务。
在写个controller 就可以通过@Autowired引用这个服务了。
总结:
1.配置文件引入dubbo,注册中心相关的配置
2.共用的一套接口
3.启动类加入@EnableDubboConfiguration注解
4.provider 加入 @Service(interfaceClass = ServiceAPI.class) 注册服务
- consumer 加入 @Reference(interfaceClass = ServiceAPI.class) 去发现服务