小编de_*_*xtr的帖子

如何处理Spring Boot中的最大文件大小异常?

我使用Spring Boot v1.2.5创建REST应用程序.上传图片时,我检查了最大文件大小,提供了以下属性:

multipart.maxFileSize= 128KB
Run Code Online (Sandbox Code Playgroud)

在application.properties中.该工具由Spring Boot本身提供.现在检查工作正常.问题是,如何处理异常并向用户返回一条他能理解的消息?

更新1 ----------

我在我的Controller中编写了一个方法,我打算使用它来处理MultipartException @ExceptionHandler.它似乎不起作用.

这是我的代码:

@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
public ApplicationErrorDto handleMultipartException(MultipartException exception){
    ApplicationErrorDto applicationErrorDto =  new ApplicationErrorDto();
    applicationErrorDto.setMessage("File size exceeded");
    LOGGER.error("File size exceeded",exception);
    return applicationErrorDto;
}
Run Code Online (Sandbox Code Playgroud)

更新2 ----------

在@luboskrnac指出之后,我设法找到了解决方案.我们可以ResponseEntityExceptionHandler在这里处理这个特殊情况.我相信,我们也可以使用DefaultHandlerExceptionResolver,但是ResponseEntityExceptionHandler允许我们返回一个ResponseEntity,而不是前者,它将返回的方法ModelAndView.我没有尝试过.

这是我用来处理的最终代码MultipartException:

@ControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

private static final Logger LOGGER = Logger.getLogger(CustomResponseEntityExceptionHandler.class);

@ExceptionHandler(MultipartException.class)
@ResponseStatus(value = HttpStatus.PAYLOAD_TOO_LARGE)
@ResponseBody
public ApplicationErrorDto handleMultipartException(MultipartException exception){
    ApplicationErrorDto applicationErrorDto =  new …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc spring-boot spring-restcontroller

10
推荐指数
1
解决办法
5889
查看次数

无法下载嵌入式 MongoDB,在代理后面,使用自动配置脚本

我有一个使用 Maven 构建的 Spring Boot 项目,我打算在其中使用嵌入式 mongo db。我在 Windows 7 上使用 Eclipse。

正如我在 Internet 选项的“连接”选项卡中所观察到的那样,我支持使用自动配置脚本的代理。当我尝试运行应用程序时出现以下异常。

java.io.IOException:无法为https://downloads.mongodb.org/win32/mongodb-win32-i386-3.2.2.zip 在 de.flapdoodle.embed.process.store.Downloader.downloadInputStream(Downloader .java:131) ~[de.flapdoodle.embed.process-2.0.1.jar:na] 在 de.flapdoodle.embed.process.store.Downloader.download(Downloader.java:69) ~[de.flapdoodle. embed.process-2.0.1.jar:na] ....

当我在 Web 浏览器中点击以下 URL 时,MongoDB 下载得很好:

https://downloads.mongodb.org/win32/mongodb-win32-i386-3.2.2.zip

这让我相信我的 Eclipse 中可能缺少一些配置,或者可能是 Maven 项目本身。请帮我找到正确的配置。

eclipse mongodb spring-boot

7
推荐指数
2
解决办法
5443
查看次数

ThreadPoolExecutor不执行所有任务

我有一个ThreadPoolExecutor- corePoolSize = 5,maxPoolSize = 10 queueSize = 10,keepAlive = 1000秒。我正在执行100 Runnable任务。实际执行的任务数量各不相同,并非全部执行。RejectionHandler也没有任何报告。我相信我对ThreadPoolExecutor的理解是错误的。有谁能够帮助我?如何执行所有任务?

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class TestThreadPoolExecutor {
    public static void main(String[] args) {
     ThreadFactory threadFactory =  Executors.defaultThreadFactory();
    ArrayBlockingQueue<Runnable> arrayBlockingQueue = new ArrayBlockingQueue<Runnable>(10);

    ThreadPoolExecutor threadPoolExecutor =  new ThreadPoolExecutor(5, 10,1000, TimeUnit.SECONDS, arrayBlockingQueue, threadFactory, new RejectedExecutionHandlerImpl());
    MonitorThread monitor = new MonitorThread(threadPoolExecutor, 3);
    Thread monitorThread = new Thread(monitor);
    monitorThread.start();
    for (int i = 0; i < 100; i++) {
        threadPoolExecutor.execute(new …
Run Code Online (Sandbox Code Playgroud)

java multithreading

5
推荐指数
1
解决办法
5405
查看次数

我可以使用在 Java 7 中编译的 jar 作为针对 Java 6 编译的项目中的依赖项吗?

我可以使用在 Java 7 中编译的 jar 作为为与 Java 6 兼容而编译的项目中的依赖项吗?我没有依赖项的源代码。我将编译后的 jar 作为 Maven 依赖项。

java jvm maven

5
推荐指数
1
解决办法
1991
查看次数

如何将日志时间戳转换为 log4j2 中的特定时区?

我在一个应用程序中使用 log4j2 进行日志记录,并且该应用程序部署在从伦敦、东京、纽约等地运行的服务器中。

我稍后汇总日志以供分析。为了使其统一,我想将日志的时间戳转换为单个时区,例如 GMT 或 EST。我怎样才能在 log4j2 中做到这一点?

<Appenders>
    <RollingRandomAccessFile name="RandomAccessFileOutput" fileName="${sys:host.log}" 
        filePattern="${sys:host.log}.%d{yyyy-MM-dd-hh-mm-ss}.gz">
        <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n"/>
        <Policies>
            <SizeBasedTriggeringPolicy size="10 MB"/>
            <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
        </Policies>
    </RollingRandomAccessFile>
    <File name="File" fileName="console.log" append="false" >
        <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n"/>
    </File>
    <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n"/>
    </Console>

</Appenders>
Run Code Online (Sandbox Code Playgroud)

java logging log4j2

1
推荐指数
1
解决办法
2543
查看次数