@
@Servicepublic class MyService {public Page findAll(Pageablepageable)}
发布为 MVC的:
@RestControllerpublic classSpringMVCEndpoint {@Autowiredprivate MyService service;@PostMapping(value = "http://www.kingceram.com/search")public ResponseEntity> findAll(@RequestParamint pageNumber, @RequestParam int pageSize) {returnnew ResponseEntity>(service.findAll(pageable),HttpStatus.OK);}}
发布为:
public classServletEndpoint extends HttpServlet {@Autowiredprivate MyService service;void doPost(HttpServletRequest req, HttpServletResponse resp){//extract requestservice.findAll(request, HttpStatus.OK);// send response}}
发布为CSE的接口:
Class PageModel{private int totalPages;private int totalElements;private int number;private int size;private int numberOfElements;private List content;private boolean first;private boolean last;}Class Record{private long id;}@RestSchema(schemaId="CSEEndpoint")@RequestMapping(value= "http://www.kingceram.com/cseEndpoint")public classCSEEndpoint {@Autowiredprivate MyService service;@PostMapping(value = "http://www.kingceram.com/search")public ResponseEntity> findAll(@RequestParamint pageNumber, @RequestParam int pageSize) {Page
(result, HttpStatus.OK);}}
依赖于 MVC特定机制的业务逻辑
在我们的改造步骤二中,去掉了,即 MVC REST 提供的相关功能被移除了 。MVC提供的有些接口需要依赖于这个功能,移除后,会导致这部分功能无法使用 。比如:
importorg.springframework.web.context.request.RequestContextHolder;importorg.springframework.web.context.request.ServletRequestAttributes;@Before("webLog()")publicvoid doBefore(JoinPoint joinPoint) throws Throwable {// 接收到请求,记录请求内容ServletRequestAttributes attributes =(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request =attributes.getRequest();// 记录下请求内容log.info("URL : " +request.getRequestURL().toString());}
上面这段代码通过获取请求,并从请求中获取一些头信息来记录日志 。依赖于 MVC REST来设置请求上下文,在整改后,获取到的为空,从而导致抛出NPE异常 。
l 解决方案
【基于Spring Boot 2.0的IoT应用集成和使用CSE实践】这种依赖于平台提供的特定功能,在进行改造的时候,都需要结合使用的平台,看是否有替代方案 。这段代码的本意是实现审计日志或者调用链等逻辑,CSE提供来获取这些信息,并已经实现了调用链等功能,所以可以直接使用,或者通过自定义、等机制实现类似的功能 。
- 基于AI的图像视觉处理技术
- Spring Boot 2.0集成和使用CSE
- 基于 stm32f103 芯片的直流电机驱动控制仿真系统
- 基于QR分解迭代求解方阵特征值和特征向量
- 48K到16K 基于C语言实现PCM音频流或音频文件重采样
- fifo2mig_axi 基于 DDR3 的串口传图帧缓存系统设计实现
- 干货!基于部分-整体关系的概念、关系和物理场景认知推理
- 智能控制技术_基于Matlab的二阶系统模糊控制仿真实例_课程学习
- 基于FPGA的串口传图SRAM缓存VGA显示
- Matlab代码实现 【sop】基于灵敏度分析的有源配电网智能软开关优化配置