ich versucht hat CommonsMultipartResolver in Boot übersetzte meine alte Anwendung (IST) zu verwenden, um zu starten, und es hat jetzt den folgenden Code:Wie CommonsMultipartResolver im Frühjahr Stiefel zu verwenden
@Configuration
public class TestConfig {
@Bean
public FilterRegistrationBean openEntityManagerFilterRegistrationBean() {
// Set upload filter
final MultipartFilter multipartFilter = new MultipartFilter();
final FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(multipartFilter);
filterRegistrationBean.addInitParameter("multipartResolverBeanName", "commonsMultipartResolver");
return filterRegistrationBean;
}
@Bean
public CommonsMultipartResolver commonsMultipartResolver() {
final CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
commonsMultipartResolver.setMaxUploadSize(-1);
return commonsMultipartResolver;
}
}
Ist dies der richtige Weg in Boot, Ursache a Ich sah einige Eigenschaften in application.properties angewendet werden. Wären sie der gleiche Zweck als eine FilterRegistrationBean zu definieren?
# MULTIPART (MultipartProperties)
multipart.enabled=true
multipart.file-size-threshold=0 # Threshold after which files will be written to disk.
multipart.location= # Intermediate location of uploaded files.
multipart.max-file-size=1Mb # Max file size.
multipart.max-request-size=10Mb # Max request size.
Kann jemand irgendein Beispiel zur Verfügung stellen, wie man es benutzt? Vielen Dank.
By the way, es versucht, die Eigenschaft "multipart.enabled = true" zu setzen, und ich bekam:
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'enabled' of bean class [org.springframework.boot.autoconfigure.web.MultipartProperties]: Bean property 'enabled' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1076)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:927)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:95)
at org.springframework.validation.DataBinder.applyPropertyValues(DataBinder.java:749)
at org.springframework.validation.DataBinder.doBind(DataBinder.java:645)
at org.springframework.boot.bind.RelaxedDataBinder.doBind(RelaxedDataBinder.java:121)
at org.springframework.validation.DataBinder.bind(DataBinder.java:630)
at org.springframework.boot.bind.PropertiesConfigurationFactory.doBindPropertiesToTarget(PropertiesConfigurationFactory.java:253)
at org.springframework.boot.bind.PropertiesConfigurationFactory.bindPropertiesToTarget(PropertiesConfigurationFactory.java:227)
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:296)
... 73 common frames omitted
Eigentlich ist diese Konfiguration fehlerhaft, der Name der Bean sollte 'multipartResolver' anstelle von' comonsMultipartResolver' sein, wenn Sie eine korrekte Integration mit dem 'DispatcherServlet' wünschen. Auch der Filter ist nicht zwingend erforderlich (nur wenn Sie ihn mit Spring Security kombinieren). –
Es gibt zwar keine 'enabled'-Eigenschaft in dieser Klasse, aber die Eigenschaft sollte [this] entsprechen (https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src /main/java/org/springframework/boot/autoconfigure/web/MultipartAutoConfiguration.java#L51) zu aktivieren/deaktivieren mehrteiliger Konfiguration. Im Grunde genommen halte ich das für ein Problem in der mehrteiligen Konfiguration von Spring Boot. Außerdem müssen nicht alle Eigenschaften eine entsprechende zuzuordnende Klasse haben. Es gibt auch andere Möglichkeiten, Eigenschaften zu verwenden, die in der Datei 'application.properties' definiert sind. –
Wenn man sich bei Spring-Boot-Dokumentation http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html gibt es eine Eigenschaft „multipart.enabled = true“, und es sagt aktivierter Wert Warum existiert es, wenn es nicht so ist? –