參考文章:http://www.r9it.com/20171018/springboot-dubbo.html
http://blog.csdn.net/rchengzhi/article/details/78990543
在這之前已經完成了dubbo和zookeeper的安裝.併成功啓動.
windows參考:http://blog.csdn.net/cencfeng11/article/details/79541175
1. 新建maven項目,把src刪除,分別新建springboot module :
- dubbo-api //service and entity
public class User implements Serializable{
private int id;
private String username;
private String password;
public interface UserService {
User getUserByName(String username);
User getUser(User user);
}
- dubbo-provider //mapper and impl
@Mapper
public interface UserMapper {
User getUserByName(String username);
User getUser(User user);
}
import com.alibaba.dubbo.config.annotation.Service;
import com.cen.dubboapi.entity.User;
import com.cen.dubboapi.service.UserService;
import com.cen.dubboprovider.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public User getUserByName(String username) {
return userMapper.getUserByName(username);
}
@Override
public User getUser(User user) {
return userMapper.getUser(user);
}
}
- dubbo-consumer //controller
import com.alibaba.dubbo.config.annotation.Reference;
import com.cen.dubboapi.entity.User;
import com.cen.dubboapi.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/user")
public class UserController {
@Reference
UserService userService;
@RequestMapping("/login")
public String login(User user){
user = userService.getUser(user);
if(user != null){
return "menu";
}
return "failed";
}
}
這樣分module的目的是讓provider和consumer共用api和實體類
2. provider提供服務,在service中暴露服務,因爲是用的註解暴露服務,所以,@Service是alibaba.dubbo的,dubbo掃描的包爲服務所在的包,provider ----application.properties:
## 數據源配置
spring.datasource.url=jdbc:mysql://localhost:3306/cf
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
## dubbo 服務提供者配置 ##
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.cen.dubboprovider.impl
## Mybatis 配置
mybatis.typeAliasesPackage=com.cen.dubboapi.entity
mybatis.mapperLocations=classpath:/mapper/*.xml
server.port=7001
3. consumer使用服務 application.properties
## 避免和 server 工程端口衝突
server.port=7002
## Dubbo 服務消費者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.scan=com.cen.dubboconsumer.controller
## html免檢 ##
spring.thymeleaf.cache=false
spring.thymeleaf.mode=LEGACYHTML5
## 視圖控制 ##
spring.mvc.view.prefix=/templates/
spring.mvc.view.suffix=.html
4.分別啓動provider和consumer,需要先啓動zookeeper和dubbo,引入的pom參考如下:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.cen</groupId>
<artifactId>dubboapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.0</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.11</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>${dubbo-spring-boot}</version>
</dependency>
</dependencies>
5.啓動provider和consumer後,在dubbo-admin中就能看到provider和consumer的詳細內容了.
IDE打包項目:
idea右邊maven.project窗
口
子模塊中Lifecycle——>clean& install
子模塊install完成後,項目package
順利的話再target中有jar java -jar 運行