Java spring copy属性是如何工作的?

Java spring copy属性是如何工作的?,java,spring,Java,Spring,我们在代码中使用复制对象中的某些属性 作为临时的事情,我在setter中放置了一个println并设置了一个调试点,但是我注意到copy属性从未使用setter。此外,我在正在设置的变量上设置了一个断点,它仍然跳过它 这是怎么回事?修改变量时如何中断?我相信Spring使用反射来实现这一点,您甚至可以通过反射API读取私有字段 编辑:当然,这意味着您的getter和setter在使用copyProperties时永远不会被调用 大多数Java调试器都有一个监视功能,当对象发生更改时,该功能会中断

我们在代码中使用复制对象中的某些属性

作为临时的事情,我在setter中放置了一个println并设置了一个调试点,但是我注意到copy属性从未使用setter。此外,我在正在设置的变量上设置了一个断点,它仍然跳过它


这是怎么回事?修改变量时如何中断?

我相信Spring使用反射来实现这一点,您甚至可以通过反射API读取私有字段


编辑:当然,这意味着您的getter和setter在使用copyProperties时永远不会被调用

大多数Java调试器都有一个监视功能,当对象发生更改时,该功能会中断


如果您使用依赖关系管理器Gradle或Maven提取源代码,您可以浏览源代码并查看BeanUtils实际上在使用字段做什么。

下面步骤5中的第二个选项说明,如果表达式的值发生更改,您可以告诉Eclipse在该行中断

条件表达式可以应用于行断点,以便在以下情况之一中,断点暂停线程的执行:

当表达式的结果为真时 当表达式的结果更改时 条件表达式可以包含任意Java代码,也可以包含多个语句,从而允许断点条件实现跟踪等功能。例如,一个条件可以执行一个print语句,然后返回一个硬编码值,以永不挂起System.out.println。。。;返回false

在Eclipse中设置条件断点:

要在断点上设置条件,请执行以下操作:

在编辑器标记栏或中查找要应用启用条件的断点。 从断点的弹出菜单中,选择。。。。“断点属性”对话框将打开。 在“属性”对话框中,选中复选框。 在字段中输入断点条件的表达式。 执行以下操作之一: 如果希望断点在每次条件计算为true时停止,请选择条件为“true”选项。提供的表达式必须是布尔表达式。 如果希望断点仅在条件的结果更改时停止,请选择条件更改的值选项。 选择“确定”关闭对话框并提交更改。启用断点时,如果断点条件的计算结果为true,则线程执行将在执行该行代码之前暂停。 条件断点在断点图标上有一个问号覆盖


在Eclipse中,我相信您可以为断点设置一个条件。它也有这个特点。但是当我观察这个物体时,什么也没发生。你是在观察这个场还是包含它的物体?也可能是手表功能在反射时被忽略了,但我还没有尝试过。您还可以尝试通过对对象执行一些显式语句来确定watch功能的工作方式,以查看它是否会触发watch,比如使用setter,或者临时公开字段并设置其值。谢谢。但是niether正常断点或条件断点的catch.这解决了setter的问题,但是你知道为什么当我看到变量更改时调试器没有捕获它吗?这也是因为思考吗?好问题,但我不确定。您可以尝试使用testlclass,也就是说,设置属性并检查调试以及它是否工作。