1:执行 gradle build -Ppro -xtest 打包 (profile/pro的配置文件)
2:上传前删除consumer多余包(避免上传多余的包,上传速度慢)
3:添加命令(重启电脑生效):
vi ~/.zshrc
alias del='7z d `ls | grep .jar$` BOOT-INF/lib'
vi /etc/profile
alias del='7z d `ls | grep .jar$` BOOT-INF/lib'
4:执行 git add 之前先执行 del 命令
5:执行 gradle clean 清除jar,本地编译器读取的应该是resources下的配置文件,而不是读取profile/pro下的配置文件
1:在 consumer config 下添加新建扫描拦截器类 CustomIntercept
并实现 com.bjike.goddess.common.consumer.config.Interceptor接口 重写customerInterceptors方法
2:添加注解 @Component 扫描注入
例:
@Component
public class CustomIntercept implements Interceptor {
@Override
public List<HIInfo> customerInterceptors() {
MyInterceptor myInterceptor = new MyInterceptor(); //自定义拦截器
HIInfo hiInfo = new HIInfo(smoothInterceptor, "/**");
Arrays.asList(hiInfo)
}
}
1: 在 consumer config包下 添加新建扫描类 CustomHystrixCommand
并继承 com.bjike.goddess.common.consumer.aspect.HystrixCommandAdvice
2:添加注解 @Aspect @Component 扫描注入
例: @Aspect
@Component
public class CustomHystrixCommand extends HystrixCommandAdvice{}
注:默认5秒内失败20个,断路器会打开
1:添加拦截器,见拦截器使用方法
例:拦截器类
@Component
public class CustomIntercept implements Interceptor {
@Override
public List<HIInfo> customerInterceptors() {
SmoothBurstyInterceptor smoothInterceptor = new SmoothBurstyInterceptor(100, SmoothBurstyInterceptor.LimitType.DROP);
HIInfo smoothInfo = new HIInfo(smoothInterceptor, "/**");
Arrays.asList(smoothInfo)
}
}
注:实际参数说明见: com.bjike.goddess.common.consumer.interceptor.limit.SmoothBurstyInterceptor 类
1:在Action类上加上@DefaultProperties即可开启
例:
@DefaultProperties(开启幂等)
@RequestMapping("test")
public class TestAct {}
1:引入fileAPI
2.使用@StorageAuth注解.注解在类上面,代表整个类都校验登录,在方法上注解代表该方法需要校验登录
3:因上传文件使用的不是dubbo协议,而是hessian,所以要在 consumer build.gradle配置文件下 添加hessian依赖
compile group: 'com.caucho', name: 'hessian', version: "$hessian_version"
4:如果涉及文件上传,那么Action类必须继承 com.bjike.goddess.common.consumer.action.BaseFileAction
以便通过getInputStreams()获取到上传文件的流,如果不需要文件上传,只是获取文件列表功能,则可以不继承BaseFileAction
5:添加文件上传登录拦截器,见拦截器使用方法
例:拦截器
@Component
public class CustomIntercept implements Interceptor {
@Autowired
private StorageUserAPI storageUserAPI;
@Override
public List<HIInfo> customerInterceptors() {
// */file 为需要拦截登录的action操作
HIInfo storageInfo = new HIInfo(new StorageIntercept(storageUserAPI), "**/");
return Arrays.asList(storageInfo);
}
}
注: fileAPI所有功能都必须包含:storageToken,path这两个参数
1.使用@LoginAuth注解.注解在类上面,代表整个类都校验登录,在方法上注解代表该方法需要校验登录
2.添加登录拦截器,见拦截器使用方法
例:拦截器
@Component
public class CustomIntercept implements Interceptor {
@Autowired
private UserAPI userAPI;
@Override
public List<HIInfo> customerInterceptors() {
HIInfo loginInfo = new HIInfo(new StorageIntercept(userAPI), "/**");
return Arrays.asList(loginInfo);
}
}
例:
@LoginAuth
@RestController
@RequestMapping("test")
public class TestAct {
}