现象:
Springmvc返回注解驱动&自定义扩展规则设置
方法:Springmvc自带返回注解驱动
1:Springmvc自携带json转换驱动
2:使用mvc自携带注解@ResponseBody转换将自动将对象转换为json格式返回
代码:
<!-- Springmvc返回注解驱动 -->
<mvc:annotation-driven conversion-service="myConverter" validator="validator">
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
<property name="objectMapper">
<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>
方法:自定义注解返回规则扩展设置
1:返回注解驱动设置自定义规则类
2:自建立类设置规则模型加入
3:新建立的规则模型(double保留两位小数)
4:4使用注解返回对象将按照自定义转会规则转换为json
代码:
<!-- mvc返回注解驱动 <mvc:annotation-driven conversion-service="myConverter" validator="validator" > -->
<mvc:annotation-driven validator="validator" >
<mvc:argument-resolvers>
<bean class="com.oig.argmentResolver.CurrentUserMethodArgumentResolver"></bean>
</mvc:argument-resolvers>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
<property name="objectMapper">
<!-- 自定义驱动类设置规则 -->
<bean class="com.oig.utils.MyObjectMapper"></bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
/**
* 新建类继承mvc自带json转换类
* 新增模型规则,设置进入对象,进行扩展
* @author Administrator
*/
public class MyObjectMapper extends ObjectMapper{
private static final long serialVersionUID = 1360761655051502549L;
public MyObjectMapper(){
//新建规则模型
SimpleModule simpleModule = new SimpleModule();
//设置模型
simpleModule.addSerializer(BigDecimal.class, new BigDecimalSerilize());
//将模型加入objectMapper对象
registerModule(simpleModule);
setSerializationInclusion(Include.NON_NULL);
}
}
/**
* 新建的jackson转换模型规则
* double保留两位小数
* @author Administrator
*/
public class BigDecimalSerilize extends JsonSerializer<BigDecimal>{
@Override
public void serialize(BigDecimal value, JsonGenerator gen,
SerializerProvider serializers) throws IOException,
JsonProcessingException {
gen.writeNumber(value.setScale(2, RoundingMode.HALF_UP).doubleValue());
}
}