我有一個名爲PersonDAOImpl的類,我使用Hibernate在我的數據庫上保存數據。如何編寫一個切入點以獲得對類方法的操作?
爲了審計該類,我使用@Aspect註釋創建了另一個類,其中我聲明瞭一些Pointcuts和Advices。每當我插入,更新或刪除一個人時,我都可以在表格上存儲有關所執行操作的適當信息。
但是現在我有更多的DAO類,我不想爲每個DAO上的每個方法創建更多方面類或更多的Advices。相反,我想要在單個切入點中「捕獲」persist(),update()或delete()的操作。
比如我有我的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(「執行(* COM .dacasals.raspertwo.dao.anydaoclass.anymethod.persist(..))「)
我的意思是在調用persist()的任何DAO類上的任何方法的切入點。 update()和delete()同樣的事情。
我該如何做到這一點?我嘗試過'內'和'內碼',但沒有任何反應。提前致謝。
不要使用AOP爲,但使用該JPA實體監聽器,這些都是專爲。 –