Java项目笔记(一)
一、springboot控制台打印sql日志 ---------.mapper为你启动类扫描的mapper路径
logging.level.---------.mapper = debug
二、前端传到后台的json转换成java对象
json:代表的是前端定义的json字符串的变量名
ProductRecord.class:对应的是你想转换成的对象.class
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
ProductRecord productRecord = JSON.parseObject(json, ProductRecord.class);
如果前端传的集合对象后台接收为string类型,解决办法:
public ResponseState createOrder(Orders orders,
@RequestParam(value = "listOrderProduct",required = true) String listOrderProduct){
JSONArray arrayList= JSONArray.parseArray(listOrderProduct); //把 string转成JSONArray对象。
List<OrderProduct> list = JSONObject.parseArray(arrayList.toJSONString(),OrderProduct.class); //转化为你想要的对象list,OrderProduct为目标对象。
return orderService.createOrder(orders,list);
}
三、解决前端传一个对象和一个json,后台接收为null
@RequestMapping里加一个produces="application/json; utf-8"
四、后台接收一个集合抛出异常java.lang.NoSuchMethodException: java.util.List.()
解决办法添加 @RequestParam(value=“list”,required=true) List list
五、for、foreach、Iterator不同数据结构遍历时间测试
基于链表结构的数据,数据增加到万级,for遍历的时间开始成倍数增长
LinkedList linkedList = new LinkedList();
for (int i =0;i<10000;i++){
linkedList.add(i);
}
基于数组格式的数据,数据添加到百万级,三者遍历时间并无明显区别
ArrayList linkedList = new ArrayList();
for (int i =0;i<1000000;i++){
linkedList.add(i);
}
foreach和Iterator相比,两种数据格式遍历时间无明显差别
六、springboot全局日期格式化配置
#jackson相关配置
spring.jackson.date-format = yyyy-MM-dd HH:mm:ss
#时区必须要设置
spring.jackson.time-zone= GMT+8
#ALWAYS的意思是即时属性为null,仍然也会输出这个key,对应yml里面的注释里面的类型
spring.jackson.default-property-inclusion=ALWAYS
七、接口测试时发现一个问题,两个实体类有继承关系,其中一个实体类有list集合。此时接口还需要传一个list集合,如果这两个list集合变量名重名,当你在遍历该参数list集合时无论集合中有多少条数据,发现list.size总是等于2,此时list中的数据被当成一条数据保存到数据库里并且循环两次!解决办法,就是更改变量名,防止重名
八、集合Swagger的时候:报错栈溢出,原因可能是代码和swagger冲突导致了无限递归
(1)、不要在接口中的参数中引用实体类,尽量用json。
(2)、代码逻辑中尽量不要 多层 集合嵌套集合。
解决办法 :注释掉启动类的@EnableSwagger2,让我改代码逻辑还是算了吧
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError
java.lang.StackOverflowError
抛出该异常的原因:Jvm线程请求的栈深度大于虚拟机所允许的深度
九、捕获异常
package rongheng.member.controller;
import org.apache.shiro.authz.UnauthorizedException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import rongheng.member.entity.ResponseState;
import javax.servlet.http.HttpServletRequest;
@ControllerAdvice
public class GlobalDefaultExceptionHandler{
/**
* @RequiresPermissions("user:updateSysUser") 捕获无权限异常
* @param req
* @param e
* @return
*/
@ExceptionHandler(UnauthorizedException.class)
@ResponseBody
public Object defaultExceptionHandler(HttpServletRequest req,Exception e){
ResponseState responseState = new ResponseState();
responseState.setState("403");
responseState.setMsg("对不起,暂无权限!");
return responseState;
}
}
十、springboot热部署
#设置开启热部署
spring.devtools.restart.enabled=true
#页面不加载缓存,修改即使生效
spring.freemarker.cache=false
<!--添加热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
<build>
<finalName>vip</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<!--热部署配置-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork:如果没有该项配置,整个devtools不会起作用-->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
Java项目笔记(一)的更多相关文章
- Java项目笔记01
1 Tomcat问题 1 今天用了Ecplise和MyEcplise想着用同一个路径下的Tomcat,但是却发现配置完Ecplise后MyEcplise却不能用了,并且后面在bin里启动Tomcat还 ...
- Redis学习笔记之二 :在Java项目中使用Redis
成功配置redis之后,便来学习使用redis.首先了解下redis的数据类型. Redis的数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set( ...
- java学习笔记(一):开始第一个java项目
这里使用IntelliJ IDEA 来新建第一个java项目 在新建项目向导,你可以选择你的项目支持的技术,你正在做一个普通的Java项目,只需单击下一步. 下一步,新建一个test的项目. 新建一个 ...
- Gradle学习笔记(1)创建简单的Java项目
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.当前 ...
- Maven 学习笔记——将普通的Java项目转换成Maven项目(3)
将一个普通的java项目转换成Maven项目并不是一个很大的任务,仅仅只需要下面的几步就能将转换成功.下面我是用一个简单的Selenium测试小demon作为例子来说的. 移调项目中所有关联的Libr ...
- IDEA 学习笔记之 Java项目开发深入学习(2)
Java项目开发深入学习(2): 查找变量被用到的地方 编译当前文件 增加变量watch 注意:我使用了keymap (eclipse模板),所以很多快捷键和eclipse一样. F5单步调试进入函数 ...
- IDEA 学习笔记之 Java项目开发深入学习(1)
Java项目开发深入学习(1): 定义编译输出路径: 继承以上工程配置 重新定义新的项目编译路径 添加source目录:点击添加,再点击移除: 编译项目: 常用快捷键总结: Ctrl+Space 代码 ...
- IDEA 学习笔记之 Java项目开发
Java项目开发: 新建模块: 添加JDK: 导入本地Jars: 从远程Maven仓库下载: 创建package: 新建类/接口/枚举等: 字体太小,改字体: Duplicate Scheme 修改编 ...
- 《Maven在Java项目开发中的应用》论文笔记(十七)
标题:Maven在Java项目开发中的应用 一.基本信息 时间:2019 来源:山西农业大学 关键词:Maven:Java Web:仓库:开发人员:极限编程; 二.研究内容 1.Maven 基本原理概 ...
- jenkins 持续集成笔记2 --- 构建 Java 项目
先说一下流程: jenkins 从 gitlab pull 代码,使用 maven 打包,然后备份原来的jar包,使用rsync同步到服务器上,重启服务. pipeline 资源去看官方中文文档 ht ...
随机推荐
- JavaScript一天一个算法题~持续更新中。。。。。
1,数组去重 i.暴力去重 思路:建一个空数组,通过判断原数组的元素是否在空数组内,如果在,不放入,不在,放入空数组. function clearCommnetArray(array){ let a ...
- 14、Spring之基于注解的声明式事务
14.1.概述 14.1.1.编程式事务 事务功能的相关操作全部通过自己编写代码来实现: Connection conn = ...; try { // 开启事务:关闭事务的自动提交 conn.set ...
- 【Java】将枚举类转换为Redis字典缓存
字典翻译框架实现看这篇: https://www.cnblogs.com/mindzone/p/16890632.html 枚举的特性 首先是枚举的一些特性: 1.枚举实例直接在枚举类中声明 2.重载 ...
- 【ActiveJdbc】05
一.事务 通常在 Java ORM 中有一个显式连接或管理器对象(JPA 中的 EntityManager,Hibernate 中的 SessionManager 等). ActiveJDBC 中没有 ...
- 【Scala】08 模式匹配 Match Case
由Scala封装的一套match case处理,功能比原Java的更为强大 package cn import scala.collection.immutable.IndexedSeqDefault ...
- Golang在整洁架构基础上实现事务
前言 大家好,这里是白泽,这篇文章在 go-kratos 官方的 layout 项目的整洁架构基础上,实现优雅的数据库事务操作. 视频讲解 :B站:白泽talk,公众号[白泽talk] 本期涉及的学习 ...
- 23 暑假友谊赛 No.3
23 暑假友谊赛 No.3 Problem - B - Codeforces 贪心吧,每次看哪块瓷砖划算就尽量多的放哪块 #include <bits/stdc++.h> #define ...
- [天线原理及设计>基本原理] 1. 辐射机制
1. 辐射机制 1.1. Single Wire 单线 如果电荷不移动,则不会产生电流,也不会产生辐射. 如果电荷以匀速移动: a. 如果电线是直的,并且范围是无限的,则没有辐射. b. 如果电线弯曲 ...
- git push --recurse-submodules = on-demand 递归push
I have the following project structure: root-project | |-- A | | | |-- C | |-- B A和B是根项目的子模块. C又是项目A ...
- 公众号3w粉丝了,说说我的下一步计划吧
终于30000了 不知不觉,已经3w粉丝了,2020年8月8日到现在一共1年零6个月. 到目前为止,原创文章一共 194 篇, 文章头条阅读量基本在1000-3000, 也终于有了两篇文章阅读过万. ...