springboot 基礎(chǔ)環(huán)境搭建
idea提供新建springboot項(xiàng)目(名字自己隨便起淤毛,我這里叫springboot_dubbo)
新建子模塊(如下圖與選擇Module后與創(chuàng)建springboot一樣)
創(chuàng)建完成后 刪除無用的相關(guān)的數(shù)據(jù)后如下圖
1. 創(chuàng)建provider
基礎(chǔ)工程建好以后開始創(chuàng)建基本配置:
在application.proproperties 加入dubbo相關(guān)信息如圖:(加入這些配置直觀感受就是代碼中可以加入dubbo相關(guān)的注解)
配置代碼:
#項(xiàng)目名
spring.application.name=dubbo-spring-boot-starter
#是否開啟dubbo
spring.dubbo.server=true
#注冊中心地址碧浊,我這里用的zookeeper 也可用其他的
spring.dubbo.registry=zookeeper://localhost:2181
開始創(chuàng)建個(gè)接口(這里演示provider與consumer各創(chuàng)建一個(gè)相同的彬祖,可以將所有接口抽離成一個(gè)jar,方便第三方調(diào)用是引用):
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實(shí)例化到spring容器中煎谍,相當(dāng)于配置文件中的<bean id="" class=""/>)
另外擴(kuò)展
1矮瘟、@controller 控制器(注入服務(wù))
2徒欣、@service 服務(wù)(注入dao)
3锋玲、@repository dao(實(shí)現(xiàn)dao訪問)
4、@component (把普通pojo實(shí)例化到spring容器中盗迟,相當(dāng)于配置文件中的<bean id="" class=""/>)
@Component,@Service,@Controller,@Repository注解的類坤邪,并把這些類納入進(jìn)spring容器中管理。
注意:剛才代碼中引入的service并不是spring的罚缕,而是dubbo的service注解艇纺,作用是暴露service接口,注冊到注冊中心邮弹,便于consumer找到服務(wù)黔衡。
配置啟動(dòng)類:
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);
}
}
啟動(dòng)類中加入 @EnableDubboConfiguration注解表示啟動(dòng)的是后加載配置dubbo相關(guān)的組件。
1. 創(chuàng)建consumer
引入配置腌乡,創(chuàng)建接口與provider都一樣,
介紹一下consumer的實(shí)現(xiàn):
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) 是引入服務(wù)盟劫,表示dubbo 從注冊中心去發(fā)現(xiàn)名叫ServiceAPI的服務(wù)。
在寫個(gè)controller 就可以通過@Autowired引用這個(gè)服務(wù)了与纽。
總結(jié):
1.配置文件引入dubbo,注冊中心相關(guān)的配置
2.共用的一套接口
3.啟動(dòng)類加入@EnableDubboConfiguration注解
4.provider 加入 @Service(interfaceClass = ServiceAPI.class) 注冊服務(wù)
- consumer 加入 @Reference(interfaceClass = ServiceAPI.class) 去發(fā)現(xiàn)服務(wù)