我正在学习 AOP,并且对切入点、建议等很满意。我很确定要问什么,但无论如何都想问。
我有一个方法,它接受一个 userId,从数据库中获取用户的记录,然后对记录做一些事情。我有 20 种不同的方法来做不同的事情,但它们都将 userId 作为输入并从数据库中获取记录。对我来说,这看起来像是一个可以拉入一个方面的横切关注点。
但是怎么做?我知道我可以访问参数(在这种情况下为 userId),访问方法的返回值并捕获方法异常。但是我如何给该方法一些可以使用的东西(在这种情况下记录在数据库中?)
public String printUserDetails(String userId)
{
Record record = Database.fetchRecord(userId);
System.out.println(record.getDetails());
return record.getTitle();
}
那么,有没有办法将数据库访问代码拉到一个方面?
我能想到的一种方法是声明如下内容作为输入
class RequestObject
{
String userId;
Record record;
}
并在 Aspect 中注入记录,然后调用proceed()。但这不知何故感觉不对。