如何有条件地公开 Spring 数据 REST 投影中的数据?
How to conditionally expose data in Spring Data REST projection?
有一个投影 UserProjection
并且 User
table 有字段 - enable_email
,一个布尔值。
@Projection(name = "summary", types = User.class)
public interface UserSummaryProjection {
String getEmail();
}
访问 URL /app/users/{id}?projection=summary
按预期显示电子邮件
如果 enable_email
是 true
,如何将摘要投影配置为 return 电子邮件?
此外,该配置是否仅影响此投影或适用于 User
实体的所有投影?
我成功了,post 会得到答案 -
在投影中,这只是用@Value 和 Spring bean 和方法名称进行注释的问题,如下所示 -
@Value("#{@userUtil.manageEmail(target)}")
String getEmail();
然后,我创建了一个 Spring 用组件注解注解的 Bean,并添加了如下方法
public String manageEmail(User user) {
Profile profile = profileRepo.findByUser(user);
String[] paramsEnabled = profile.getSettings().split(",");
boolean emailAllowed = Arrays.stream(paramsEnabled).anyMatch((s) -> (s.equals(Constants.EMAIL_ENABLED)));
return emailAllowed ? user.getEmail() : null;
}
有一个投影 UserProjection
并且 User
table 有字段 - enable_email
,一个布尔值。
@Projection(name = "summary", types = User.class)
public interface UserSummaryProjection {
String getEmail();
}
访问 URL /app/users/{id}?projection=summary
按预期显示电子邮件
如果
enable_email
是true
,如何将摘要投影配置为 return 电子邮件?此外,该配置是否仅影响此投影或适用于
User
实体的所有投影?
我成功了,post 会得到答案 -
在投影中,这只是用@Value 和 Spring bean 和方法名称进行注释的问题,如下所示 -
@Value("#{@userUtil.manageEmail(target)}")
String getEmail();
然后,我创建了一个 Spring 用组件注解注解的 Bean,并添加了如下方法
public String manageEmail(User user) {
Profile profile = profileRepo.findByUser(user);
String[] paramsEnabled = profile.getSettings().split(",");
boolean emailAllowed = Arrays.stream(paramsEnabled).anyMatch((s) -> (s.equals(Constants.EMAIL_ENABLED)));
return emailAllowed ? user.getEmail() : null;
}