官方问答社区:https://sns.bladex.vip
官方开发手册:https://www.kancloud.cn/smallchill/blade/1482369
1、maven配置:
<mirror>
<id>nexus</id>
<name>nexus repositories</name>
<url>https://repo1.maven.org/maven2</url>
<mirrorOf>*,!blade-release</mirrorOf>
</mirror>
2、多服务启动配置——在.idea/workspace.xml中将
节点下的配置替换成:
<component name="RunDashboard">
<option name="configurationTypes">
<set>
<option value="SpringBootApplicationConfigurationType" />
</set>
</option>
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
<option name="contentProportion" value="0.36338797" />
</component>
3、工作流模块FlowApplication、FlowDesignApplication的两个服务的表大部分是用doc/sql目录下的初始化SQL生成的,少部分是启动服务时动态生成的;
4、token获取接口的密码需要使用转义的
admin-admin
admin-21232f297a57a5a743894a0e4a801fc3
1、feign调用
@RequestParam("XXX")
或@RequestBody
@EnableBladeFeign(basePackages={"org.springblade","cn.**.**"})
@EnableDiscoveryClient
2、redis缓存使用
@Cacheable(cacheNames = "demo-info", key = "#name")
BladeRedis
,源码在BladeX-Tool里面,开源版为RedisTemplate
,原生的3、swagger配置
ip:端口
,location为/v2/api-docs
,这样可以绕过鉴权,便于开发与前后端联调。swagger:
base-packages:
- org.springblade
- cn.xxx.xxxx(自己的项目包名)
4、任务调度中心
bladex提供的任务调度注册器是blade-xxljob-admin服务,示例执行器是blade-xxljob,配置新服务为执行器
引入配置:
xxl:
job:
accessToken: ''
admin:
addresses: http://127.0.0.1:7009/xxl-job-admin
executor:
#服务名
appname: cn-xxxx-xxx
ip: 127.0.0.1
logpath: ../data/applogs/xxl-job/jobhandler
logretentiondays: -1
#执行器端口,非服务端口
port: 2333
示例:
@Component
@Slf4j
@AllArgsConstructor
public class TestJob{
private static final Logger logger = LoggerFactory.getLogger(TestJob.class);
@XxlJob("testTask")
public ReturnT<String> testTask(String param) throws Exception {
XxlJobLogger.log("开始执行】");
try {
......
} catch (Exception e) {
return ReturnT.FAIL;
}
return ReturnT.SUCCESS;
}
}
规则配置
启动 blade-xxljob-admin 后 ,再启动 cn-xxxx-xxx ,进入http://localhost:7009/xxl-job-admin/配置执行器
PS:端口为执行器端口而不是服务端口
若保存后,机器地址出现服务名且为绿色,注册器配置成功
配置任务
执行器:上一步添加的
Cron:周期表达式
JobHandler:定时任务名(例:@XxlJob(“testTask”),任务名:testTask)
执行定时任务
5、查询时,若数据库不存在记录,框架会自动返回一个所有属性值都是“”的对象,用 null != ogject 可能无法判断;
6、当后端数值型返回空时,框架默认返回-1;
7、接口编码问题,对接系统请求用的请求头为:
application/x-www-form-urlencoded; charset=GBK
在controller中设置
PostMapping(value = "/ccbCustNotify",consumes = {"application/x-www-form-urlencoded; charset=GBK"})
httpServletRequest.setCharacterEncoding("GBK");
都不能解决问题。
原因:bladex的切面对httpServletRequest进行的get,导致后面的编码转换失效。
解决方法:添加该接口的过滤器,在进入切面前将编码转成GBK
;
8、网关启动报错
Failed to process import candidates for configuration class
;
原因:包冲突(gateway引了common,common引入了blade-start-mybatis、blade-core-tool);
解决方法:排除 blade-start-mybatis、blade-core-tool 依赖;
<dependency>
<groupId>cn.xx.xxx</groupId>
<artifactId>etcx-gateway-admin</artifactId>
<exclusions>
<exclusion>
<groupId>org.springblade</groupId>
<artifactId>blade-start-mybatis</artifactId>
</exclusion>
<exclusion>
<groupId>org.springblade</groupId>
<artifactId>blade-core-tool</artifactId>
</exclusion>
</exclusions>
</dependency>
9、网关启动报错,多次启动才能成功
Caused by: java.util.ConcurrentModificationException: null
尚无解决方案,官方尚未修复
https://sns.bladex.vip/q-3703.html
权限:
数据权限:
注解:@DataAuth(type=param1,column=param2,value=param3)
Web全自动:权限管理 -> 数据权限
注解半自动:@DataAuth(code=param1)
+ 权限管理 -> 数据权限
接口权限:
注解:@PreAuth("hasRole('user')")
、@PreAuth("hasAnyRole('user','admin')")
web:权限管理 -> 接口权限 + @PreAuth("hasPermission('code')")
接口全局:@PreAuth("permissionAll()")
或 @PreAuth(AuthConstant.PERMISSION_ALL)
接口文档:
类:@Api()
实体:@ApiModel(value = "XXX", description = "XXX")
字段:@ApiModelProperty(value = "XXX",required = true/false)
记录备忘,随时更新。