1.减少无意义的查询
写非常复杂业务时一定要留意现在要的数据之前是不是查询过了,避免无意义的查询,不然会拖慢代码的执行速度,而且排查起来也非常麻烦。
2.List中for循环添加元素时new写到for外面
对象转json的依赖,lombok插件老生常谈就不写出来了
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.32</version></dependency>
类的数据结构
@Data@AllArgsConstructor@NoArgsConstructorpublic class Book {private int id;private String bookName;private String bookType;private Date createTime;private Date updateTime;}
演示一下new Book()在for外面的执行结果
public void beanCopy() {// 创建3个对象Book book1 = new Book(1, "残酷月光", "2", new Date(), new Date());Book book2 = new Book(2, "半岛铁盒", "2", new Date(), new Date());Book book3 = new Book(3, "最长的电影", "3", new Date(), new Date());// 添加到list中List<Book> bookList = new ArrayList<>();bookList.add(book1);bookList.add(book2);bookList.add(book3);List<String> bookListString = new ArrayList<>();// 转成str后添加到list中for (Book book : bookList) {bookListString.add(JSON.toJSONString(book));}// str转成对象添加到list中List<Book> newBookList = new ArrayList<>();Book book = new Book();for (String bookString : bookListString) {BeanUtils.copyProperties(JSON.parseObject(bookString, Book.class), book);newBookList.add(book);}log.info("字符串数组{}", newBookList);}
newBookList中的全部都是id=3,因为只new了一次对象,值全部指向id=3
字符串数组[Book(id=3, bookName=最长的电影, bookType=3, createTime=Mon Sep 06 13:36:39 CST 2021, updateTime=Mon Sep 06 13:36:39 CST 2021), Book(id=3, bookName=最长的电影, bookType=3, createTime=Mon Sep 06 13:36:39 CST 2021, updateTime=Mon Sep 06 13:36:39 CST 2021), Book(id=3, bookName=最长的电影, bookType=3, createTime=Mon Sep 06 13:36:39 CST 2021, updateTime=Mon Sep 06 13:36:39 CST 2021)]
正确的做法是new Book()写到循环里面,执行一次就new一次
for (String bookString : bookListString) {Book book = new Book();BeanUtils.copyProperties(JSON.parseObject(bookString, Book.class), book);newBookList.add(book);}
这次的结果就是对的
字符串数组[Book(id=1, bookName=残酷月光, bookType=2, createTime=Mon Sep 06 13:45:51 CST 2021, updateTime=Mon Sep 06 13:45:51 CST 2021), Book(id=2, bookName=半岛铁盒, bookType=2, createTime=Mon Sep 06 13:45:51 CST 2021, updateTime=Mon Sep 06 13:45:51 CST 2021), Book(id=3, bookName=最长的电影, bookType=3, createTime=Mon Sep 06 13:45:51 CST 2021, updateTime=Mon Sep 06 13:45:51 CST 2021)]
3.SpringBoot Test中与Aop冲突报错
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mathCalculator' defined in com.config.MianConfig3: Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Unexpected AOP exception; nested exception is java.lang.IllegalStateException: Unable to load cache item
这个异常有两种情况:
一、缺少aop包 二 、aop包的版本和spring的版本不对
spring-aop版本与 aspectjweaver 包版本冲突
解决办法
maven项目的spring-aop版本是5.1.9,其他的spring版本是5.2.1,aspectjweaver 版本是1.8.3,将spring-aop的版本改成5.2.1,运行正常
项目中并没有用到spring-aop包,用的是aspectjweaver ,直接将spring-aop删掉,运行正常
原文链接:https://blog.csdn.net/weixin_40230655/article/details/106634074
