【spring錯誤】multipartResolver Bean建立錯誤

文件上傳模塊集成錯誤

現象

當導入spring集成的文件上傳處理bean時java

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
        <beans:property name="maxUploadSize" value="10485760"></beans:property> 
        <beans:property name="defaultEncoding" value="UTF-8"></beans:property>
</beans:bean>

出現錯誤web

Error creating bean with name 'multipartResolver': Failed to introspect bean class [org.springframework...]

解決錯誤

從錯誤提示中能夠看出,是因爲缺乏相關的類文件的緣故。MultipartResolver用於處理文件上傳,當收到請求時 DispatcherServletcheckMultipart() 方法會調用 MultipartResolverisMultipart() 方法判斷請求中是否包含文件。若是請求數據中包含文件,則調用 MultipartResolverresolveMultipart() 方法對請求的數據進行解析,而後將文件數據解析成 MultipartFile 並封裝在 MultipartHttpServletRequest (繼承了 HttpServletRequest) 對象中,最後傳遞給 ControllerMultipartResolver是一個接口,它的實現類有2個:spring

  • CommonsMultipartResolver
  • StandardServletMultipartResolver

其中 CommonsMultipartResolver 使用 commons Fileupload 來處理 multipart 請求,因此在使用spring的上傳模塊時,咱們須要引入相應的 jar 包。不過StandardServletMultipartResolver 是基於 Servlet 3.0來處理 multipart請求的,因此不須要引用其餘 jar 包,可是必須使用支持 Servlet 3.0的容器才能夠(tomcat從 Tomcat 7.0以上的版本開始支持 Servlet 3.0)。因爲此處咱們使用的是CommonsMultipartResolver實現,所以須要引入相應的包,以下所示:tomcat

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.3</version>
</dependency>
相關文章
相關標籤/搜索