APIJSONFunctionParser 中如何调用service 中的方法
Description
虽然代码是这样写的,但是在进行到indexService.sendSms这一步的时候,显示indexService==null,所以该怎么调用
@TommyLemon 大佬,麻烦看一下
Parser, ObjectParser, SQLConfig, SQLExecutor 等所有解析过程中的类和相关子类都不能用 @Component, @Configuration 等 Spring/SpringBoot 注解,否则会导致并发下数据错乱: https://gitee.com/Tencent/APIJSON/issues/I5LWSH
如果要用到被注解的类实例,则可以通过 ApplicatonContext.getBean 获取 Spring/SpringBoot 注解的类,参考 DemoSQLExecutor 中 APPLICATION_CONTEXT.getBean(Datasource.class)
你的应该是 indexService = APPLICATION_CONTEXT.getBean(IndexService.class)
我继承了APIJSONController类,新增了一个cudBatch接口,为什么这个接口不能调用远程函数? @TommyLemon
ApplicatonContext.getBean 获取 Spring/SpringBoot 注解的类,参考 DemoSQLExecutor 中 APPLICATION_CONTEXT.getBean(Datasource.class)
谢谢,这个方法成功了
我继承了APIJSONController类,新增了一个cudBatch接口,为什么这个接口不能调用远程函数? @TommyLemon
应该是你自己写的接口没有通过 APIJSON 的 FunctionParser 去解析 JSON 参数。 既然都自己新增接口了,直接在新增接口里手动编码调用下就行了,前端都可以不用传参。
我继承了APIJSONController类,新增了一个cudBatch接口,为什么这个接口不能调用远程函数? @TommyLemon
应该是你自己写的接口没有通过 APIJSON 的 FunctionParser 去解析 JSON 参数
那怎么解决呀?怎么进行解析
手动编码调用这个方法,或者使用 APIJSON 的 Parser.parse / FunctionParser.invoke 来解析。 直接 new DemoFunctionParser() 也能拿到一个实例,如果 sendSms 是无状态的纯函数就可以这样
就是我上面说的两种方式,都可以实现
这个校验应该是后端强制的,为啥要前端决定?如果前端传给你非法的参数,并且指定不需要校验呢?
这个校验应该是后端强制的,为啥要前端决定?如果前端传给你非法的参数,并且指定不需要校验呢?
是这样的: 因为前端官网有很多表单, 1、有的表单不需要获取验证码对短信验证码进行校验; 2、有的表单需要获取验证码进行校验,需要对短信验证码进行校验; 我现在想使用一个接口cudBatch(这个接口是公共的,1和2两种情况都调用这种方法,这两种情况区别就是是否获取验证码最终提交表单的时候进行校验)进行修改表数据,同时如果前端的表单再提交前需要校验短信验证码的话,就调用远程函数进行校验(如果是第2中情况);
我上面提到的方式都能实现。 另外也可以把公共的逻辑抽象到一个类(里面有具体实现方法),然后再 自定义接口自己调用,或者用 APIJSON Parser 调用,这样更方便复用
好的,我试试,谢谢您的建议
我继承了APIJSONController类,新增了一个cudBatch接口,为什么这个接口不能调用远程函数? @TommyLemon