long blogs

进一步有进一步惊喜


  • Home
  • Archive
  • Tags
  •  

© 2025 long

Theme Typography by Makito

Proudly published with Hexo

spring踩坑日志

Posted at 2019-08-22 笔记 spring 

1、文件上传大小限制问题

问题描述:使用application.properties配置文件上传大小限制不起作用

1
2
3
spring.servlet.multipart.max-request-size=-1
spring.servlet.multipart.max-file-size=-1
spring.servlet.multipart.location=/home/trainee/springboot/document

解决办法:新建一个bean的配置
可以在启动类中添加如下代码

1
2
3
4
5
6
7
8
9
@Bean
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory factory = new MultipartConfigFactory();
// 设置最大文件的大小
factory.setMaxFileSize(DataSize.of(2000, DataUnit.MEGABYTES));
// 设置最大请求大小
factory.setMaxRequestSize(DataSize.of(2000,DataUnit.MEGABYTES));
return factory.createMultipartConfig();
}

2、springBoot跨域请求问题

使用@CrossOrigin("*")无法实现跨域
解决办法,在控制层使用如下注解就可以实现跨域
@CrossOrigin(origins = "*",allowCredentials = "true",methods = {})

3、时区出现错误解决办法

(1)出现连接时区错误
(2)插入时间数据时出现错误
解决办法:在连接的url之后设置时间属性
jdbc:mysql://127.0.0.1:3306/trainee?serverTimezone=GMT%2B8
将时区设置成北京的时区

4、接收前端返回json对象自动打包问题

需要在接收的处声明@RequestBody才能自动装箱。声明@Valid来验证数据。

5、log4j配置不起作用

要使用自定义的log,必须将spring boot 中自带的spring.boot.start.logging给去掉。因为logback的优先级比log4j的优先级要高。(后面测试含有logback也可以加载配置文件,玄幻)
推荐把依赖包给去掉
去除包中的依赖如下

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.7.RELEASE</version>
<exclusions>
<exclusion>
<!--排除logback依赖-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

如果出现下面的错误,需要检查log4j依赖是否都添加了

1
2
3
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

能够运行的依赖如下:

1
2
3
4
5
6
7
8
9
10
11
<!--日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.26</version>
</dependency>

如果还有错误,可能需要引入common-logging.jar

6、Long 类型传到前端页面的精度丢失问题

解决办法,将Long类型转换成字符串。传给前端,前端传回去从字符串转成Long类型。可以自己写函数转换。但是有现成的轮子可以用就不必造轮子了。
使用阿里的fastjson提供的注解便可以轻松的完成工作了。

1
2
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
7、controller返回前端的数据自动转换大小写的问题

由于移植了一个net的项目到java。但是,前端的命名不规范,变量全部为大写。但是由于fastjson的自动转换,将本来是大写的的变量变成小写了。

解决办法

由于使用lombok插件,所以不能在get方法上使用@JsonPropertty注解。使用在属性上有一样的效果。

1
2
3
@JsonProperty("Name")
@TableField("Name")
private String Name;

返回前端的数据就变成了Name而不是name

8、mybatis-plus忽视某些实体字段。不对数据库进行映射。

在字段上使用@TableField(exist = false)来忽视该字段对数据库的映射。

9、mybatis-plus 字符串非空更新失败

问题描述:字符串类型非空更新失败,像密码、邮箱这些作为字符串存储。只是更新其中一部分,会导致没有值的字段更新为空。

解决办法

给字段设置更新策略updateStategy = FieldStrategy.NOT_EMPTY。只是对字符起作用,其它的类型会使用updateStategy = FieldStrategy.NOT_NULL

Share 

 Previous post: 前端路由 Next post: javascript实现的小东西 

© 2025 long

Theme Typography by Makito

Proudly published with Hexo