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;
@ControllerAdvice
public 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
*/
List<Article> getList(Long articleId) throws ArticleException;
Boolean add(ArticleVo article);
Boolean del(Long articleId);
}
复制代码
拦截此异常,输出
{"code":-1,"msg":"service出错","data":null}
复制代码
具体文章参考:blog.csdn.net/mj158518/ar…
更新
返回空数据--拒绝返回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 - 应用配置文件,应用启动会自动读取配置
复制代码