`
ben_hu
  • 浏览: 93975 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用自定义Spring-MessageConverter,加密Response

 
阅读更多

实际项目中,后台接口返回的内容是要加密的

(我们可以在每个接口返回前手动加密、返回,这样总觉得不爽微笑

 

Spring的MessageConverter正是用于转换数据(输入、输出)的

所以,可以通过自定义一个MessageConverter,比较简洁地实现这个需求。

 

1. 为了最小的影响框架的功能,复用Jackson的Converter

【AbstractJackson2HttpMessageConverter】

【MappingJackson2HttpMessageConverter】

其中,【 protected void writeInternal】是往Response输出内容。

 

2. 修改

AbstractJackson2HttpMessageConverter#writeInternal

 

// this.objectMapper.writeValue(generator, result);
String str = objectMapper.writeValueAsString(result); // ① 转换成JSON格式字符串
String str2 = encrypt(str)                            // ② 加密返回值
outputMessage.getBody().write(str.getBytes());        // ③ 输出到Response
 

 

说明

1. 用Spring框架的话,返回值自然是一个统一的ResultVO

2. 基于上面这点,从抽象类【AbstractJackson2HttpMessageConverter】冲去掉了【implements GenericHttpMessageConverter<Object>】,

顺次删除【canWrite】【canRead】等。

 

3. 修改AbstractJackson2HttpMessageConverter#supports

@Override
protected boolean supports(Class<?> clazz) {
	return ResultVO.class.isAssignableFrom(clazz);
}

 

 

 

 

分享到:
评论

相关推荐

    spring-amqp,spring-retry,spring-rabbit

    标题中的"spring-amqp"、"spring-retry"和"spring-rabbit"是Spring框架的三个关键组件,它们主要用于构建高效、可靠的分布式系统,尤其是在消息传递和错误处理方面。 1. **Spring AMQP**: Spring AMQP是Spring框架...

    使用 Spring-WS 完成的 Web Service (SOAP)

    - **安全控制**:Spring-WS 支持 WS-Security 标准,可以实现用户认证、消息加密等功能。 - **消息转换**:通过 MessageConverter,可以将 SOAP 消息与其他格式(如 JSON)之间进行转换。 - **集成测试**:Spring-...

    spring-amqp 1.5.3源码

    Spring AMQP是Spring框架的一个扩展,它提供了在Java应用程序中使用Advanced Message Queuing Protocol (AMQP)的全面支持。AMQP是一种开放标准,用于在分布式系统中进行异步消息传递,而Spring AMQP则将这种强大的...

    spring-kafka源代码

    Spring Kafka是Spring框架的一部分,专为集成Apache Kafka而设计,提供了一套轻量级且强大的API,使得在Java应用中使用Kafka变得更加简单。本文将围绕Spring Kafka的源代码进行深度解析,帮助开发者更好地理解和运用...

    spring-jms

    3. **消息转换**: Spring JMS支持消息与应用程序对象之间的转换,通过MessageConverter接口实现。这使得可以将Java对象序列化为消息体,反之亦然。 4. **事务管理**: Spring JMS允许与Spring的声明式事务管理集成,...

    Spring-JMS把企业消息处理变容易.doc

    `org.springframework.jms.support.converter`包则包含了`MessageConverter`接口,用于在Java对象和JMS消息之间进行转换,实现数据的序列化和反序列化。`org.springframework.jms.support.destination`包提供了目标...

    spring-webmvc-3.1.1.RELEASE.jar.zip

    支持多种模板引擎,如FreeMarker、Velocity和Groovy,使得视图渲染更加便捷,同时支持使用SpEL(Spring Expression Language)在模板中进行表达式计算。 10. **性能优化**: 3.1.1版本还包含了性能上的优化,比如...

    消息中间件-spring-MQ.zip

    5. **消息转换**:Spring Messaging提供了`MessageConverter`接口,用于在消息对象和实际传输的数据之间进行转换,比如JSON或XML。 6. **事务支持**:为了保证消息的可靠传递,Spring支持基于JMS事务或AMQP事务的...

    Spring-MVC-step-by-step2.rar

    同时,Spring MVC 还支持自定义消息转换器(MessageConverter),方便我们处理不同格式的请求和响应,如 JSON、XML。 总结来说,Spring MVC 是一个功能强大且灵活的 Web 开发框架,它提供了一套完整的解决方案,...

    spring-mvc 项目

    **Spring MVC 框架详解** Spring MVC 是 Spring 框架的一个重要组成部分,它是一个用于构建 Web 应用程序的轻量级、模型-视图-控制器(MVC)框架。Spring MVC 提供了丰富的功能,使得开发人员能够轻松地处理 HTTP ...

    spring-mvc demo代码

    7. **拦截器(Interceptor)**:Spring MVC允许定义拦截器,它们可以在请求处理前后执行自定义逻辑,如权限检查、日志记录等。 8. **HandlerAdapter**:适配器模式的体现,Spring MVC使用HandlerAdapter来调用控制器...

    spring-framework-3.2.x.zip

    Spring MVC是Spring Framework中的Web开发模块,3.2.x版本引入了更多增强,如类型安全的路径变量、自定义异常处理、改进的视图解析等。`@RequestMapping`、`@Controller`、`@ResponseBody`等注解帮助构建RESTful服务...

    spring-messaging源码

    Spring Messaging提供了`MessageConverter`接口,用于在消息体和Java对象之间进行转换。常见的实现有`SimpleMessageConverter`和`Jackson2JsonMessageConverter`,分别支持基本类型和JSON格式的数据。 `...

    Spring整合JMS(三)——MessageConverter介绍

    本文将深入探讨Spring与JMS的整合,特别是MessageConverter的概念及其作用。 一、Spring JMS概述 Spring提供了对JMS的全面支持,包括连接工厂配置、消息生产者、消费者以及消息转换器等。JMS允许应用程序通过消息...

    spring-boot集成RabbitMQ

    如果需要自定义消息的序列化和反序列化,可以实现 `MessageConverter` 接口,比如使用 Jackson JSON 支持: ```java @Component public class JsonMessageConverter extends AbstractMessageConverter { ...

    sample-spring-boot-war-jms:使用JPA和Spring-Boot的示例Spring JMS

    7. **消息转换器**: Spring JMS提供了一些内置的消息转换器,如`StringMessageConverter`,可以根据需要自定义转换规则,确保消息体能在消息生产者和消费者之间正确转换。 8. **Web层整合**: 将JMS与RESTful API...

    rabbitmq和spring集成

    4. **定义消息转换器**:如果你需要发送和接收自定义对象,需要定义一个消息转换器,如`Jackson2JsonMessageConverter`,将对象转换成JSON字符串。 5. **声明交换机和队列**:在Spring配置中,声明RabbitMQ的交换机...

    spring-jms源码

    Spring JMS(Java Message Service)是Spring框架的一部分,它为Java消息传递提供了一种轻量级的抽象层,使得开发者能够方便地在应用程序中使用JMS。Spring JMS提供了对JMS API的高度封装,简化了消息生产者和消费者...

    spring-cloud-stream-rabbit

    MultipleOutputsWithConditionsService:另一个有条件路由的自定义处理器,但是使用基于注释的标头过滤器进行声明性路由,而不是对条件进行编程检查。 请注意,使用此版本的SCS无法​​有条件地检查有效载荷。 ...

    spring-amqp.zip

    你可以使用` Jackson2JsonMessageConverter `将对象自动序列化为JSON字符串,或者反序列化JSON字符串为对象。这使得不同系统之间可以通过RabbitMQ共享结构化的数据。 5. **自定义确认消息**:RabbitMQ支持两种确认...

Global site tag (gtag.js) - Google Analytics