Spring AOP: аннотированные методы не игнорируются - PullRequest
0 голосов
/ 24 января 2019

У меня следующая проблема ... Я хочу использовать фильтр Hibernate для фильтрации специфичных для арендатора данных. Я реализовал аспект AOP (Spring AOP), чтобы включить фильтр непосредственно перед отправкой запросов на сервер базы данных. Это работает просто отлично. Однако существуют ситуации, когда фильтрация должна быть отключена (вход в систему, поиск производителей транспортных средств и т. Д.). Итак, я расширил свой pointcut следующим образом:

 @Before("!@annotation(com.example.persistence.DisableTenantFilter) && " +
        "execution(* com.example.persistence.repository.*.*.*(..))")
 public void applyFilter(JoinPoint joinPoint) {}

Аспект должен запускаться для всех методов во всех классах в подпакете репозитория, НО не для тех методов, которые отмечены @ DisableTenantFilter . В настоящее время этот аспект запускается также для тех методов, которые отмечены этой аннотацией.

Пример репозитория (в этом случае аспект не должен выполняться):

@Repository
public interface UserRepository extends BaseRepository<User, Long> {
  @DisableTenantFilter
  @Query("SELECT u FROM User u WHERE u.username=:username")
  User retrieveByUsernameForLogin(@Param("username") String username);
}

Есть идеи, что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...