MapStruct 使用@Context注解传递上下文信息

一、@Context 注解的核心作用

  1. 传递额外参数 在映射方法中注入自定义上下文对象(如用户身份、全局配置、服务实例),用于动态调整映射逻辑。
  2. 避免污染源/目标对象 与源对象或目标对象无关的数据(如当前用户、系统配置)通过上下文传递,保持对象结构的纯粹性。
  3. 支持复杂业务逻辑 在 @BeforeMapping@AfterMapping 或自定义映射方法中访问上下文,实现条件映射、数据补全等需求。

二、@Context 的使用方法

1. 定义上下文对象

创建包含所需信息的上下文类:

public class MappingContext {
    private String currentUser;  // 当前用户
    private String dateFormat;   // 日期格式
    private UserService userService; // 外部服务
    // Getters/Setters
}
2. 在 Mapper 接口中声明上下文参数

在映射方法的参数中添加 @Context 注解:

@Mapper
public interface UserMapper {
    UserDTO toUserDTO(UserEntity user, @Context MappingContext context);
}
3. 在抽象类中使用上下文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值