dubbo官方文档
http://dubbo.apache.org/zh-cn/docs/user/quick-start.html复制代码
大概关系概览:
安装调试
安装maven jdk1.8 安装lombok插件
wenba-example-dubbo项目
此项目下是数据服务层,
wenba-example-dubbo-web
此项目是web层,请求数据服务层接口
1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面若返回json等内容到页面,则需要加@ResponseBody注解 2.@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面复制代码
web端
配置本地dubbo链接(否则将走zk)
@Reference(version = "${demo.service.version}", application = "${dubbo.application.id}", url = "dubbo://localhost:20880") private UserServiceFacade userServiceFacade;复制代码
添加一个新模块
(caps lock + command + :) 快捷键
异常的使用: 默认web调用rpc接口返回的自定义异常是受过处理的,无法捕获到。
定义global异常接收类
package com.wenba.seas.exception;import com.wenba.exception.ArticleException;import com.wenba.utils.JsonResult;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;@ControllerAdvicepublic class GlobalException { /** * 全局处理异常 * * @param e * @return */ @ExceptionHandler(Exception.class) @ResponseBody public JsonResult handleException(Exception e) { return JsonResult.error(-1, "服务异常"); } @ExceptionHandler(ArticleException.class) @ResponseBody public JsonResult ArticleException(ArticleException e) { return JsonResult.error(-1, e.getMessage()); }}复制代码
在service层抛出异常测试
throw new ArticleException("service出错");复制代码
在api接口定义层定义指定的throws异常
package com.wenba.api;import com.wenba.domain.Article;import com.wenba.exception.ArticleException;import com.wenba.vo.ArticleVo;import java.util.List;public interface ArticleServiceFacade { /** * 获取数据列表 * @return */ ListgetList(Long articleId) throws ArticleException; Boolean add(ArticleVo article); Boolean del(Long articleId);}复制代码
拦截此异常,输出
{ "code":-1,"msg":"service出错","data":null}复制代码
具体文章参考:
更新
返回空数据--拒绝返回null
Collections.emptyList() 复制代码
org.spring.springboot.controller - Controller 层org.spring.springboot.repository - ES 数据操作层org.spring.springboot.domain - 实体类org.spring.springboot.service - ES 业务逻辑层Application - 应用启动类application.properties - 应用配置文件,应用启动会自动读取配置复制代码