Chuenhung的个人网站

chuenhung.github.io

示例代码如下:
抽象类

1
2
3
4
5
6
7
8
9
10
public abstract class AbstractWaterMark {

@Autowired
private AchievementApplicationService achievementApplicationService;

public AchievementApplication queryByCode(String code){
return achievementApplicationService.queryByCode(code);
}

}

增加子类(需要@Service注解)

1
2
3
4
@Service
public class WaterMark extends AbstractWaterMark {

}
阅读全文 »

word转pdf的相关第三方jar说明

  • docx4j
    免费开源、稍微复杂点的word,样式完全乱了,且xalan升级为2.7.3后会报错。
  • poi
    免费开源、官方文档少、学习成本大、使用复杂、生成的样式也有问题。
  • aspire.doc
    样式保留很好、使用方便。
    未付费时,第一行会有红色水印且超过500个段落(大概25页)会被截取。
    网上没有破解版。
  • aspose.words
    样式保留很好、使用方便。
    网上有破解版。
  • documents4j
    样式保留很好、使用方便。
    底层直接调用微软的office所以,完美保留样式
阅读全文 »

需求

项目中共用了一个Redis,而项目中部分代码使用了JetCache的@Cached注解。所以需要给@Cached动态配置area属性值,用来区分dev和test环境。

问题

自定义注解的属性值需要常量值,即static final修饰,直接通过配置文件不可行。

解决方案

1、使用AOP切面拦截使用注解的方法,动态修改注解的属性值。切面1。
2、注解的底层一般也有一个AOP切面。切面2。
需要确保切面1在切面2之前执行 (使用@order(int)注解,值越小越先执行)。

阅读全文 »

SpringBoot校验List失效解决方法

失效场景示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
@RestController
@RequestMapping("/v1/jx/flowSummary")
@Slf4j
public class JxFlowSummaryController {

@Operation(summary = "批量修改原始得分")
@PostMapping("/updateScore")
public ResponseDto batchUpdateScore(@RequestBody @Valid List<BatchUpdateScoreDto> dtoList) {
// jxFlowSummaryService.batchUpdateScore(dtoList);
return ResponseUtil.wrapSuccess(null);
}
}

解决方法一:在controller上加上@Validated注解

1
2
3
4
5
6
7
8
9
10
11
12
@RestController
@RequestMapping("/v1/jx/flowSummary")
@Slf4j
@Validated
public class JxFlowSummaryController {

@Operation(summary = "批量修改原始得分")
@PostMapping("/updateScore")
public ResponseDto batchUpdateScore(@RequestBody @Valid List<BatchUpdateScoreDto> dtoList){
return ResponseUtil.wrapSuccess(null);
}
}
阅读全文 »
0%