У меня есть класс с именем PersonDAOImpl, где я использую Hibernate для сохранения данных в моей базе данных.Как написать pointcut для получения операции над методом класса?
Чтобы проверить класс, я создал другой класс, используя аннотацию @Aspect, где я объявил несколько пунктов и советов. Каждый раз, когда я вставляю, обновляю или удаляю человека, я могу хранить на столе правильную информацию о выполненной операции.
Однако теперь у меня больше классов DAO, и я не хочу создавать больше классов аспектов или больше. Советы для каждого метода для каждого DAO. Вместо этого я хочу «захватить» операции persist(), update() или delete() в одном pointcut.
Например, у меня есть этот метод на моем DAO:
@Override
@Transactional
public void addPerson(Person p) {
Session session = this.sessionFactory.getCurrentSession();
session.persist(p);
session.flush();
logger.info("Person saved successfully, Person Details="+p);
}
И это, как я аудит вставки:
@Pointcut("execution(* com.dacasals.raspertwo.dao.PersonDAOImpl.addPerson(..))")
public void addNewPerson() {
}
@After("addNewPerson()")
public void aP() {
System.out.println("added a new person");
operation = "Insert";
date = Calendar.getInstance().getTime();
register(operation, date);
}
Но я хочу что-то вроде @Pointcut ("исполнение (* ком .dacasals.raspertwo.dao.anydaoclass.anymethod.persist (..)) ")
Я имею в виду pointcut для любого метода на любом из моих классов DAO, где вызывается persist(). То же самое для update() и delete().
Как я могу это достичь? Я пробовал с «внутри» и «внутри кода», но ничего не происходит. Заранее спасибо.
Не использовать АОП для этого, но использовать JPA сущности слушателей для того, те, которые предназначены для этого. –