您好,登錄后才能下訂單哦!
使用框架:
jdk 1.8
springboot-2.1.3
dubbo-2.6
按照Dubbo官方開發(fā)建議,創(chuàng)建一個接口項目,該項目只定義接口和model類;
1、創(chuàng)建springboot工程 spring-boot-demo-dubbo-interface
坐標:
<groupId>com.example</groupId>
<artifactId>spring-boot-demo-dubbo-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
添加spring-data-jpa 依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2、創(chuàng)建model
package com.example.demo.model;
@Entity
public class User implements Serializable{
private static final long serialVersionUID = 1L;
@Id @GeneratedValue
private long id;
private String userName;
private String password;
private int age;
public long getId() {
return id;
}
//省略set get 方法
3、創(chuàng)建接口:
package com.example.demo.service;
import com.example.demo.model.User;
public interface UserService {
public void save(User user);
public String sayHello(String word);
}
4、使用命令 clean install 打包安裝到maven倉庫。
阿里巴巴提供的dubbo集成springboot開源項目;
參考文檔:
https://github.com/apache/dubbo-spring-boot-project/blob/0.2.x/README_CN.md
本工程采用該項目的jar包進行繼承:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
1、創(chuàng)建一個Springboot項目spring-boot-demo-dubbo-provider并配置好相關的依賴;
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 加入springboot與dubbo集成的起步依賴 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- 由于使用了zookeeper作為注冊中心,則需要加入zookeeper的客戶端jar包: -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<!-- spring-data-jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 添加接口服務 -->
<dependency>
<groupId>com.example</groupId>
<artifactId>spring-boot-demo-dubbo-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
2、在Springboot的核心配置文件application.properties中配置dubbo的信息:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.properties.hibernate.hbm2ddl.auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true
# 訪問端口
server.port=8080
# dubbo配置
dubbo.application.name=springboot-dubbo-provider
dubbo.registry.address=zookeeper://192.168.146.128:2181
3、開發(fā)編寫Dubbo的接口實現(xiàn)類:
package com.example.demo.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Service;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
@Component //注冊為spring bean
@Service // 這注解是dubbo提供的
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public void save(User user) {
userRepository.save(user);
}
@Override
public String sayHello(String word) {
return word;
}
}
4、入口main程序啟動Dubbo服務提供者:添加注解 @EnableDubbo
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
@SpringBootApplication
@EnableDubbo
public class SpringBootDemoDubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoDubboProviderApplication.class, args);
}
}
啟動main ,服務發(fā)布到zookeeper 注冊中心。
1、創(chuàng)建一個Springboot項目spring-boot-demo-dubbo-consumer并配置好相關的依賴;
2、加入springboot與dubbo集成的起步依賴:(pom.xml 配置同上)
注意: 服務提供者 和 消費者都要配置 服務接口依賴
3、在Springboot的核心配置文件application.properties中配置dubbo的信息:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
# WEB\u670D\u52A1\u7AEF\u53E3
server.port=8081
# dubbo\u914D\u7F6E
dubbo.application.name=springboot-dubbo-consumer
dubbo.registry.address=zookeeper://192.168.146.128:2181
4、編寫一個Controller類,調用遠程的Dubbo服務:
package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
@RestController
public class UserController {
@Reference //該注解是dubbo提供的
private UserService userService;
@RequestMapping("/say")
public String sayHello(String name) {
return userService.sayHello(name);
}
@RequestMapping("/save")
public void save() {
User u = new User();
u.setAge(20);
u.setPassword("123");
u.setUserName("zheng");
userService.save(u);
}
}
5、啟動類添加 開啟dubbo 注解 @EnableDubbo
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
@SpringBootApplication
@EnableDubbo
public class SpringBootDemoDubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoDubboConsumerApplication.class, args);
}
}
6、啟動main方法。
7、調用遠程接口:
http://localhost:8081/say?name=hello
一個SpringBoot基于Dubbo的服務接口開發(fā)完成。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。