前提: 已經準備好Dubbo-admin和Zookeeperjava
顯示建立一個Empty Project,建立兩個Module--->consumer-server以及provider-server:git
這是建立成功的結構。github
兩個Module都導入下方依賴:spring
<!-- dubbo-spring-boot-starter --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.8</version> </dependency> <!-- zkclient --> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.12.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
建立一個Service文件夾:apache
public interface TicketService { public String getTicket(); }
@Service @Component public class TicketServiceImpl implements TicketService { @Override public String getTicket() { return "這是一個getTicket()"; } }
注意:springboot
這裏的@Component是Spring下的註解,可是@Service應該使用的是Dubbo下的註解服務器
用了Dubbo儘可能不要用@Service,若是要使用,記得分清楚Spring和Dubbo註解的不一樣app
server.port=8001 # 服務應用名字 dubbo.application.name=provider-server # 註冊中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 # 註冊服務 dubbo.scan.base-packages=com.zc.Service
java -jar xxxx.jar
@Service public class UserService { //想拿到 提供者 提供的東西,要去註冊中心拿 @Reference //引用 TicketService ticketService; public void buyTicket(){ String ticket = ticketService.getTicket(); System.out.println("拿到啦---"+ticket); } }
這裏的@Service是將該類注入到Spring容器,使用的Spring的註解ide
這裏 TicketService ticketService; 會報錯,由於在 consumer-server 中沒有 TicketService 這個接口。spring-boot
因此,咱們把這個接口複製過來:
public interface TicketService { public String getTicket(); }
這樣就能夠使用了,Dubbo會自動給你引用提供者的實現類。
server.port=8002 # 消費者拿服務路徑 dubbo.application.name=consumer-server # 註冊中心的地址 dubbo.registry.address=zookeeper://127.0.0.1:2181
消費者與提供者的不一樣:
提供者配置信息不須要註冊服務,消費者提供地址,消費者只須要拿到服務。
在consumer-server中的test中進行測試:
@SpringBootTest class ConsumerServerApplicationTests { @Autowired UserService userService; @Test void contextLoads() { userService.buyTicket(); } }
前提:Zookeeper已經開啓
提供者提供服務
消費者如何消費
我的博客爲:
MoYu's HomePage
MoYu's Gitee Blog