项目场景: 在spring boot启动方法上设置@EnableAutoConfiguration注解,如下所示:
问题描述:
@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
@SpringBootApplication
public class CloudApplication extends ServletInitializer{
public static void main(String[] args) {
SpringApplication.run(CloudApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(CloudApplication.class);
}
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
resolver.setResolveLazily(true);//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
resolver.setMaxInMemorySize(40960);
resolver.setMaxUploadSize(5 * 1024 * 1024);//上传文件大小 5M 5*1024*1024
return resolver;
}
}
这里会发生Attributes should be specified via @SpringBootApplication错误
原因分析:
经过排查代码发现,@SpringBootApplication注解中已经包含@EnableAutoConfiguration注解,不需要重复定义@EnableAutoConfiguration注解。解决方案:
去掉@EnableAutoConfiguration注解,将(exclude = {MultipartAutoConfiguration.class})赋予@SpringBootApplication,改进后:@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
public class CloudApplication extends ServletInitializer{
public static void main(String[] args) {
SpringApplication.run(CloudApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(CloudApplication.class);
}
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
resolver.setResolveLazily(true);//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
resolver.setMaxInMemorySize(40960);
resolver.setMaxUploadSize(5 * 1024 * 1024);//上传文件大小 5M 5*1024*1024
return resolver;
}
}