Spring中Responsebody注解的作用

本文分析了微信支付回调通知重复的原因,并介绍了如何通过正确配置Spring MVC来确保仅接收一次通知。涉及Spring MVC的注解使用及JSON数据返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:在微信支付,接收微信付款结果通知,一次通知,接收了好多次。这说明:微信支付系统没接收到正确的响应码。
<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
  <return_msg><![CDATA[OK]]></return_msg>
</xml>

分析:

在使用@RequestMapping后,返回值通常解析为跳转路径。
加上@responsebody后,返回结果直接写入HTTP response body中,不会被解析为跳转路径。
比如异步请求,希望响应的结果是json数据,那么加上@responsebody后,
就会直接返回json数据。
也就验证了:springmvc可以返回json,也可以返回单独的string,也可能返回的string对应的是一个资源路径


<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <!-- 避免string类型直接解析成json-->
           <bean class="org.springframework.http.converter.StringHttpMessageConverter" />
            <bean
                class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <bean class="org.springframework.http.MediaType">
                            <constructor-arg index="0" value="application" />
                            <constructor-arg index="1" value="json" />
                            <constructor-arg index="2" value="UTF-8" />
                        </bean>
                    </list>
                </property>
                <property name="objectMapper">
                    <!-- <bean class="com.ultimate.cms.core.base.ObjectMappingCustomer" 
                        /> -->
                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                        <property name="serializationInclusion">
                            <value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
                        </property>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

解决办法:
 <!-- 避免string类型直接解析成json-->
           <bean class="org.springframework.http.converter.StringHttpMessageConverter" />
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值