springboot整合dubbo
1.服务提供者
pom:
spring boot整合mybatis 后在pom中添加dubbo依赖
<!-- Spring Boot Dubbo -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
application.properties中dubbo配置
## Dubbo 服务消费者配置
spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://10.25.25.145:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
#duubbo扫描service
spring.dubbo.scan=com.baosight.service
这里有两个地方需要注意,一个是如果用了热加载插件spring-boot-devtools,在pom中一定要去掉,否则启动报错
另一个就是service实现类中的service注解要换成dubbo的,application.properties中dubbo中已经配置了dubbo扫描,可以扫描到这个注解并注册到zookeeper,
//import org.springframework.stereotype.Service;
import com.alibaba.dubbo.config.annotation.Service;
@Service(version = "1.0.0")
public class TSUserServiceImpl implements TSUserService{
@Autowired
private TSUserDao tSUserDao;
public List<TSUser> selectTSUser(Assist assist){
return tSUserDao.selectTSUser(assist);
}
}
2.服务消费端
pom :
pom中加入
<!-- Spring Boot Dubbo -->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
application.properties中dubbo配置
## 改变端口
server.port=8081
## Dubbo 服务消费者配置
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://10.25.25.145:2181
spring.dubbo.scan=com.baosight.service
service:
消费端的service也要有接口,要和服务提供方一致,可以直接将服务提供方的service接口复制过来,也可以将servcie接口单独放在一个model中,直接依赖过来,在本例中我是直接复制过来的
public interface TSUserService{
/**
* 获得TSUser数据集合,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
* @param assist
* @return
*/
List<TSUser> selectTSUser(Assist assist);
}
接下来的一个service类相当于service接口的实现类,作用是引入注册到zookeeper中的service
@Component
public class TSUserDubboService {
@Reference(version = "1.0.0")
private TSUserService tSUserService;
public List<TSUser> selectTSUser(Assist assist){
return tSUserService.selectTSUser(assist);
}
}
@Component 这个注解的作用是将这个类注入到spring容器中,在控制层需要注入,作用和@service。@Reference是dubbo的注解,作用是引入注册到zookeeper中的service到这个类中。
控制层
@RestController
public class Contorller {
@Autowired
private TSUserDubboService tSUserDubboService;
@RequestMapping("/list")
public List test(){
return tSUserDubboService.selectTSUser(new Assist());
}
}
先启动zookeeper,之后启动服务提供方,之后启动服务消费方,访问http://localhost:8081/list
参考代码示例