千家信息网

springboot分布式整合dubbo的方式是什么

发表于:2024-10-15 作者:千家信息网编辑
千家信息网最后更新 2024年10月15日,这篇文章主要讲解了"springboot分布式整合dubbo的方式是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"springboot分布式整合d
千家信息网最后更新 2024年10月15日springboot分布式整合dubbo的方式是什么

这篇文章主要讲解了"springboot分布式整合dubbo的方式是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"springboot分布式整合dubbo的方式是什么"吧!

 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。

1.服务提供者配置

//需要额外引入的jar包  提供者                  com.alibaba.boot            dubbo-spring-boot-starter            0.2.0                            com.github.sgroschupf            zkclient            0.1        

spring配置方式

                            

springboot配置方式

#dubbo的配置#服务名dubbo.application.name=user-provider#注册中心地址dubbo.registry.address=zookeeper://192.168.192.3:2181#使用的协议以及端口号dubbo.protocol.name=dubbodubbo.protocol.port=11111

发布服务的方式

在相应的实现类上添加注解

import com.alibaba.dubbo.config.annotation.Service;import com.oracle.shopping.user.mapper.MenuMapper;import com.oracle.shopping.user.po.Menu;import com.oracle.shopping.user.service.MenuService;import javax.annotation.Resource;@Service  //dubbo的注解表示发布该类@org.springframework.stereotype.Service//spring的注解表示会在启动时实例化该类public class MenuServiceImpl implements MenuService {    @Resource    private MenuMapper menuMapper;    @Override    public int deleteByPrimaryKey(String id) {        return menuMapper.deleteByPrimaryKey(id);    }    @Override    public int insert(Menu record) {        return menuMapper.insert(record);    }    @Override    public int insertSelective(Menu record) {        return menuMapper.insertSelective(record);    }    @Override    public Menu selectByPrimaryKey(String id) {        return menuMapper.selectByPrimaryKey(id);    }    @Override    public int updateByPrimaryKeySelective(Menu record) {        return menuMapper.updateByPrimaryKeySelective(record);    }    @Override    public int updateByPrimaryKey(Menu record) {        return menuMapper.updateByPrimaryKey(record);    }}

启动类中添加dubbo的扫包器,设置扫描路径

@SpringBootApplication@MapperScan("com.oracle.shopping.user.mapper")@EnableTransactionManagement@DubboComponentScan("com.oracle.shopping.user.service.impl")public class UserProviderApp {    public static void main(String[] args) {       SpringApplication.run(UserProviderApp.class, args);    }}

2.服务消费者订阅

             com.alibaba.boot            dubbo-spring-boot-starter            0.2.0                            com.github.sgroschupf            zkclient            0.1        

spring配置方式

                    

在controller中进行依赖注入和调用

@Controller@RequestMapping("/user")public class UserController {    //通过动态代理的方式生成的动态代理类    @Autowired(required = false)    private UserService userService;    //不进行检查,防止报错无法运行    @Autowired(required = false)    private OrderService orderService;    @RequestMapping("/a")    public @ResponseBody    User detail(){     return userService.findUserById(1);    }    @RequestMapping("/b")    public @ResponseBody    Orders details(){        return orderService.findUserById(1);    }}

springboot配置方式

#指定自己的名称dubbo.application.name=user-consumer#指定注册中心的地址dubbo.registry.address=zookeeper://192.168.192.3:2181

在controller当中使用注解声明要使用的服务(实现类)

@RestController@RequestMapping("/user")public class UserController {    //表示要使用的服务    @Reference(interfaceName = "com.oracle.shopping.user.service.UserService")    private UserService userService;    @Autowired    private RedisTemplate redisTemplate;    @RequestMapping("/detail")    public User detail(String id){        return userService.selectByPrimaryKey(id);    }}

启动类中设置dobbo注解的扫描路径

@SpringBootApplication@DubboComponentScan("com.oracle.shopping.user.controller")public class UserConsumerApp {    public static void main(String[] args) {        SpringApplication.run(UserConsumerApp.class );    }}

感谢各位的阅读,以上就是"springboot分布式整合dubbo的方式是什么"的内容了,经过本文的学习后,相信大家对springboot分布式整合dubbo的方式是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0