[英]PropertyChangeSupport with weak references to PropertyChangeListener?
[英]How to use PropertyChangeSupport and PropertyChangeListener?
@Controller
@RequestMapping("/scrape")
public class ScrapeController {
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener listener) {
this.pcs.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
this.pcs.removePropertyChangeListener(listener);
}
@GetMapping({"/", ""})
public String scrape(){
this.pcs.firePropertyChange("value", "wait", "scrape"); // Breakpoint.
return "done";
}
}
public class ScrapeService implements PropertyChangeListener {
private final ScrapeController sc;
public ScrapeService(ScrapeController sc) {
this.sc = sc;
sc.addPropertyChangeListener(this);
}
public void propertyChange(PropertyChangeEvent evt) {
System.out.println("Name = " + evt.getPropertyName()); // Breakpoint.
System.out.println("Old Value = " + evt.getOldValue());
System.out.println("New Value = " + evt.getNewValue());
}
}
本項目基於Spring。 但我不認為問題與 Spring 有關。
這里有兩個斷點。 調試器在我觸發屬性更改的scrape
方法中的第一個斷點處停止。 但是調試器無法在propertyChange
方法中的斷點處停止。 所以調試消息沒有被打印出來。
我的猜測是ScrapeService
從未實際實例化並添加到ScrapeController
的addPropertyChangeListener
方法中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.