SpringMVC+fastjson項目配置


首先這個項目得是maven項目,不是maven項目的自己引包,我就不多說了.

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.24</version>
        </dependency>

導完包就可以用了,不過切記切記

這個掃描注解的路徑設置,千萬千萬不能設置成com

下面我出現問題的時候就是因為這里設置成com了,導致fastjson的fastJsonpResponseBodyAdvice這個方法也被開啟了,所以要配置下面說的jsonp的問題

各位朋友千萬注意...如果不需要jsonp,這里千萬不能懶省事...

-----------------------------------以下內容已經過時,沒必要再看--------------------------------------------

由於我個人喜歡在創建項目時,maven里使用最新的包,

所以,在去年12月份使用spring-webmvc 4.3.5版本和fastjson1.2.23時,

就出現了項目無法啟動的問題,當時真的困擾了我很久,還專門在fastjson的github上提問https://github.com/alibaba/fastjson/issues/996

由於沒有那么多時間等,於是一遍與作者溝通,一邊換回了fastjson1.2.17,放棄了最新的特性JSONArray.toJavaList(.class)的方法

終於,今天再次開啟了新的項目,再次遇到了這個問題,這次終於解決了.

maven包:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.6.RELEASE</version>
        </dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.24</version>
        </dependency>

DispatcherServlet-context.xml

<mvc:annotation-driven>
              <!--配置@ResponseBody由fastjson解析-->
              <mvc:message-converters>
                     <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                            <property name="defaultCharset" value="UTF-8"/>
                     </bean>
                     <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4"/>
              </mvc:message-converters>
       </mvc:annotation-driven>
       <mvc:default-servlet-handler />
       <bean id="fastJsonpResponseBodyAdvice" class="com.alibaba.fastjson.support.spring.FastJsonpResponseBodyAdvice">
              <constructor-arg>
                     <list>
                            <value>callback</value>
                            <value>jsonp</value>
                     </list>
              </constructor-arg>
       </bean>

這樣配置就可以了.

前一個配置項可以不要,作用是遇到@ResponseBody注解的方法時,幫你轉成json形式,比如下面的

@RequestMapping("/test")
    public ResponseEntity<Object> test(){
        List<Object> objectList=new ArrayList<Object>();
        return new ResponseEntity<Object>(objectList,new HttpHeaders(), HttpStatus.OK);
    }

這里只是示意,到時候你往return的ResponseEntity里第一個參數放什么東西,不管是單個對象還是數組,都能轉成json,如果是放JsonObject或者是JsonArray,就不會再畫蛇添足的加引號了

而下一個配置必須要要,因為之前項目運行不成功的時候就是因為缺少了fastJsonpResponseBodyAdvice這個方法,不知為何不設置成默認關閉,一定要配置

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM