springboot(分布式)整合dubbo
1.服务提供者配置
//需要额外引入的jar包 提供者
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
com.github.sgroschupf
zkclient
0.1
-
spring配置方式
<?xml version="1.0" encoding="UTF-8"?> -
springboot配置方式
#dubbo的配置
#服务名
dubbo.application.name=user-provider
#注册中心地址
dubbo.registry.address=zookeeper://192.168.192.3:2181
#使用的协议以及端口号
dubbo.protocol.name=dubbo
dubbo.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配置方式
<?xml version="1.0" encoding="UTF-8"?>
-
在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 ); } }