我想在Spring Data Jpa储存库通用方法(如findAll
)上使用@PostFilter
注释,如下所示:
@PostFilter("filterObject.isActivated()==true")
public List<Advertisement> findAll();
我怎么能做到这一点,记住这些方法是由Spring Data Jpa"自动"提供的,因此不暴露在应用程序代码中?
是的,您可以将@PostFilter
添加到Spring数据存储库提供的任何方法中。只需重写现有方法findAll()并添加@PostFilter
注释,如示例中所示。不要忘记在定义存储库的配置中添加
<global-method-security pre-post-annotations="enabled" />
或基于Java的配置
@EnableGlobalMethodSecurity(prePostEnabled = true)
。记住。这只适用于集合和数组。对于其他的返回类型,比如Page,你会得到一个IllegalArgumentException。实现细节见DefaultMethodSecurityExpressionHandler#filter