bladex框架学习笔记

相关资料

官方问答社区: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
bladex框架学习笔记_第1张图片

bladex框架学习笔记_第2张图片
5、接口token放行配置——blade.yaml中的
bladex框架学习笔记_第3张图片

开发使用注意点

1、feign调用

  • feign提供方方法加参数注解,如@RequestParam("XXX")@RequestBody
  • 在调用方启动文件加feign扫包注解
    @EnableBladeFeign(basePackages={"org.springblade","cn.**.**"})
  • 若以上仍无法解决,被调用服务启动类加注解@EnableDiscoveryClient

2、redis缓存使用

  • 注解 @Cacheable(cacheNames = "demo-info", key = "#name")
  • 工具类 BladeRedis,源码在BladeX-Tool里面,开源版为RedisTemplate,原生的

3、swagger配置

  • blade-swagger的配置文件配置服务的名称、网关地址(blade-gateway地址)、以及服务接口页(/服务名/v2/api-docs)跳转地址。本地开发建议 uri配为服务的ip:端口,location为/v2/api-docs,这样可以绕过鉴权,便于开发与前后端联调。

bladex框架学习笔记_第4张图片

  • 在nacos的配置文件blade-dev.yaml里面加新包扫描:
swagger:
  base-packages:
    - org.springblade
    - cn.xxx.xxxx(自己的项目包名)
  • 重启提供接口的服务,刷新http://localhost:18000/doc.html

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:端口为执行器端口而不是服务端口
bladex框架学习笔记_第5张图片
若保存后,机器地址出现服务名且为绿色,注册器配置成功
在这里插入图片描述

配置任务
执行器:上一步添加的
Cron:周期表达式
JobHandler:定时任务名(例:@XxlJob(“testTask”),任务名:testTask)
bladex框架学习笔记_第6张图片
执行定时任务
bladex框架学习笔记_第7张图片
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)

记录备忘,随时更新。

你可能感兴趣的:(学习,java)