- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用spring AOP(@Before)获取修改后的对象的值。我有以下类(class):
package com.mypack;
public class Person {
private String id;
private String firstName;
private String lastName;
public String getId() { return id; }
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public void setId(String id) { this.id = id; }
public void setFirstName(String firstName) { this.firstName = firstName; }
public void setLastName(String lastName) { this.lastName = lastName; }
public String toString() { return "Person[" + id + ",
+ firstName + ", " + lastName+ "]"; }
}
详细信息类:
package com.mypack;
public class Details extends Person{
private String address;
private String contactNum;
//getters and setters
public String toString() { return "Details[" + address + ",
" + contactNum+ "]"; }
}
AspectSetterInterceptor 类:
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class AspectSetterInterceptor {
@Before("execution(* com.mypack.Details.set*(*))")
public void before(JoinPoint joinPoint) throws Throwable {
Object[] signatureArgs = joinPoint.getArgs();
for (Object signatureArg : signatureArgs) {
Person obj = (Person) signatureArg;
System.out.println("Before : " + obj.getFirstName() + " ---- "
+ obj.getId());
}
}
}
测试类:
public class ChangeTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(AspectConfig.class);
ctx.refresh();
//Details userService = ctx.getBean(Details.class);
Details obj1 = new Details();
obj1.setAddress("xx 202");
obj1.setContactNum("2124551234");
obj1.setId("242");
obj1.setFirstName("John");
obj1.setLastName("John");
Details obj2 = new Details();
obj2.setAddress("ASDf 202");
obj2.setContactNum("234544565656");
obj2.setId("23689");
obj2.setFirstName("Sam");
obj2.setLastName("S");
System.out.println("obj1 : " + obj1);
System.out.println("obj2 : " + obj2);
obj2.setFirstName("Samuel");
}
}
也按照此处提到的方式进行了尝试 Spring AOP - get old field value before calling the setter
--已编辑--当执行 ChangeTest 类时,它会打印 obj1 和 obj2 的值(类中重写了 toString() 方法)。它没有命中 AspectSetterInterceptor 中提到的 before(..) 方法。请指教。
PS:我的场景是当有人使用 set*(..) 方法时点击 @Before 方面。在上面的例子中,我给出了一个简单的类Details,它扩展了Person类,所以只要在这些类中调用set*(..)方法,就应该调用aspect @before,类似地,我希望在我的应用程序中任何set**( ..) 方法被调用我想调用@Before。有没有更好的方法可以遵循。TIA。
最佳答案
您在方法 setId(int i)
中接受一个 int,但在 main 方法中您传递一个 String。 obj1.setId("242");
你所要做的就是传递一个 int obj1.setId(242);
作为旁注,覆盖 toString()
方法,因为您正在执行 System.out.println("obj1 : "+ obj1);
,但打印 obj 只是打印它的地址(一堆随机数字和字母) )。
关于java - 调用对应的 set 方法时获取对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57499657/
我想检查我的应用程序或系统中是否存在库。在 Java 中,我通常执行 System.loadlibrary,但是有谁知道 C 中类似的相应调用吗? 最佳答案 是dlopen打开一个库,dlsym 从加
我在 typescript 中输入以下内容 export type Excludable = T & { isExcluded?: boolean } 其中过滤值: export type Filte
我最近在我的应用程序中添加了一种方法,可以自动格式化 TextView ,从“50000”到“50,000”,效果绝对完美。现在我遇到的问题是,在我的应用程序中,有多个按钮功能可以从该 TextVie
SELECT * FROM conversations WHERE chatMembers LIKE '%1%'AND chatMembers LIKE '%10%' 对话表 id | chatMem
我正在编写一个需要将 Java Date() 值保存到 MySQL 数据库的 RESTful Web 服务,但是,我不确定 MySQL 中可以保存 Java Date() 的数据类型是什么,或者我是否
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
同样,在任何 Red Hat 或 JBoss 站点上都没有关于此的信息,所以我在这里问... 我不确定是 13 还是 14。 最佳答案 Mapping the Community versions w
我曾尝试使用 swift 开发一款利用 iPhone 的 3D 触摸硬件的游戏。然而,当我将我的应用程序提交到 App Store 时,它被拒绝了,因为该游戏无法在 iPad 上玩。 我的问题是,
Qt 的有序关联容器对应项 std::map是QMap , std::set是QSet , 对于无序关联容器 std::unordered_map是QHash . 我应该用什么来代替std::unor
JavaScript 方法 String.fromCharCode() 在以下意义上与 Python 的 unichar() 等效: print unichr(213) # prints Õ on t
正如谷歌在 "Discontinuing support for JSON-RPC and Global HTTP Batch Endpoints" 中提到的那样,Google API 客户端库已重新
我正在使用 MapLayer 和 MapOverlay 在 map 中创建自己的路径/折线,GPS 捕获的所有点都存储在一个结构中,以便我可以访问它们。随时。 现在,我希望路径在用户操作 map (缩
我们使用 Adobe Flash Builder 创建由 Flex 提供支持的交互式 Web 应用程序。现在我们正在寻找替代方案,让我们在 UI 设计和迎合 HTML5 的编码方面拥有同样的开发便
我想知道Android/Java 中类似C#/C++ 中的GetTickCount 方法的相应方法吗? 最佳答案 Android 为 SystemClock.uptimeMillis() .请注意,u
我用 Vue + Phaser 开始了新项目,但是当我尝试加载 Assets 时,this.game.load.image 中的“load”和“add”返回“undefined”。我尝试从 JS 文件
我是一名优秀的程序员,十分优秀!