我使用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) 我有一个使用 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 项目本身。请帮我找到正确的配置。
我有一个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 7 中编译的 jar 作为为与 Java 6 兼容而编译的项目中的依赖项吗?我没有依赖项的源代码。我将编译后的 jar 作为 Maven 依赖项。
我在一个应用程序中使用 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 ×4
spring-boot ×2
eclipse ×1
jvm ×1
log4j2 ×1
logging ×1
maven ×1
mongodb ×1
spring ×1
spring-mvc ×1