我正在使用aspectj向现有类添加一些字段并对其进行注释。 我正在使用加载时间编织。
示例: - 我有一个Class客户,我在其中添加了3个字符串属性。但我的问题是,我必须设置一些价值观,并在我的公司电话会议之前得到它。
我正在尝试以下方法。 在我的aj文件中,我添加了以下内容,我的问题是在环绕切入点,我如何获取属性并设置属性。
public String net.customers.PersonCustomer.getOfflineRiskCategory() {
return OfflineRiskCategory;
}
public void net.customers.PersonCustomer.setOfflineRiskCategory(String offlineRiskCategory) {
OfflineRiskCategory = offlineRiskCategory;
}
public String net.customers.PersonCustomer.getOnlineRiskCategory() {
return OnlineRiskCategory;
}
public void net.customers.PersonCustomer.setOnlineRiskCategory(String onlineRiskCategory) {
OnlineRiskCategory = onlineRiskCategory;
}
public String net.customers.PersonCustomer.getPersonCommercialStatus() {
return PersonCommercialStatus;
}
public void net.customers.PersonCustomer.setPersonCommercialStatus(String personCommercialStatus) {
PersonCommercialStatus = personCommercialStatus;
}
@Around("execution(* net.xxx.xxx.xxx.DataMigration.populateMap(..))")
public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable {
Object arguments[] = joinPoint.getArgs();
if (arguments != null) {
HashMap<String, String> hMap = (HashMap) arguments[0];
PersonCustomer cus = (PersonCustomer) arguments[1];
return joinPoint.proceed();
}
如果有人有想法,请告诉我。
的问候, FT
答案 0 :(得分:0)
第一个建议,我会避免将代码风格的aspectj与注释风格混合在一起。即,而不是@Around
,请使用around
。
其次,不是从joinPoint获取参数,而是应该在切入点中绑定它们:
Object around(Map map, PersonCustomer cust) :
execution(* net.xxx.xxx.xxx.DataMigration.populateMap(Map, PersonCustomer) && args(map, cust) {
...
return proceed(map, cust);
}
现在,回答你的问题:你还需要使用intertype声明向你的类添加新字段,所以做这样的事情:
private String net.customers.PersonCustomer.OfflineRiskCategory;
private String net.customers.PersonCustomer.OnlineRiskCategory;
private String net.customers.PersonCustomer.PersonCommercialStatus;
请注意,此处的private
关键字表示方面的私有,而不是您声明的类。