将@PostFilter注释应用于通用Spring Data Jpa存储库方法

时间:2014-03-17 13:58:14

标签: spring spring-security aop aspectj spring-data-jpa

我想在Spring Data Jpa存储库通用方法(例如@PostFilter)上使用findAll注释,如下所示:

@PostFilter("filterObject.isActivated()==true")
public List<Advertisement> findAll();

我怎么能记住这些方法是由Spring Data Jpa“自动”提供的,因此不在应用程序代码中公开?

1 个答案:

答案 0 :(得分:1)

是的,您可以向Spring Data Repository提供的任何方法添加@PostFilter。只需覆盖现有方法findAll()并添加您的@PostFilter注释,如示例所示。不要忘记添加到定义了存储库的配置

<global-method-security pre-post-annotations="enabled" />

或基于java的配置

@EnableGlobalMethodSecurity(prePostEnabled = true)

分别。 记住。这适用于集合和数组。对于像Page这样的其他每种返回类型,都会出现IllegalArgumentException。有关实施细节,请参阅DefaultMethodSecurityExpressionHandler#filter