SaaS设计理念:SaaS为 服务商提供了一系列的基础网络建设,运维,租赁等服务,按照实际需要,给服务商提供服务,用互联网使用系统,使得服务商像打开自家水龙头一样使用简单,便捷;
SaaS最好的模式:
共享数据库,共享数据架构,使用外键区分数据
优点:使用价值成本最低,可以实现多储存多表,多库,储存多数据;
缺点:隔离性低,安全性低;数据备份和恢复比较难;
在实际微服务场景中使用feign:
记住:哪个微服务需要暴露接口给其他服务使用,就把接口抽成一个feign模块,谁需要调用谁就引入该模块;
使用案例:
1.导入依赖;
2.编写feign接口;
3.编写feign接口的实现类(fallbackFactory)
1.导入依赖;
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
2.编写feign接口;
@FeignClient(value = "service-auth",fallbackFactory = FallbackAuth.class) public interface FeignAuth { @PostMapping(value="/login/save") public JSONResult save(@RequestBody Login login); @PostMapping(value="/saveLoginMeal") public JSONResult saveLoginMealDto(@RequestBody LoginMealDto dto);
3.编写feign接口的实现类(fallbackFactory) 实现类记得交给spring管理
@Component public class FallbackAuth implements FallbackFactory<FeignAuth> { @Override public FeignAuth create(Throwable throwable) { return new FeignAuth() { @Override public JSONResult save(Login login) { return JSONResult.error("注册信息保存错误"); } @Override public JSONResult saveLoginMealDto(LoginMealDto dto) { return JSONResult.error("注册信息保存错误dto"); } }; } }
全局异常处理
可以把系统常见的错误自定义一个全部异常类,把错误信息转成友好信息返回给用户,使得用户更加清晰易懂;
package cn.itsource.hrm.exception;
import cn.itsource.hrm.result.JSONResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;/**
* 全局异常处理工具类
*/
@RestControllerAdvice //是对Controller进行增强的
public class GlobalExceptionHandler {//捕获并处理自定义异常
@ExceptionHandler(MyException.class)
public JSONResult MyException(MyException e){
return JSONResult.error(e.getMessage());
}//捕获并处理算术异常
@ExceptionHandler(ArithmeticException.class)
public JSONResult methodArithmeticException(ArithmeticException e){
return JSONResult.error("算术异常");
}/**
* 如果发生上面没有捕获的异常,那么统一走这个异常捕获,相当于是最大的一个范围
*/
@ExceptionHandler(Exception.class)
public JSONResult exceptionHandler(Exception e){
e.printStackTrace();
return JSONResult.error("系统异常,请稍后再试");
}
}